sql >> Databasteknik >  >> RDS >> Mysql

Vad är standardnamnet för begränsningar i MySQL?

Problem:

Du vill veta standardnamnen på begränsningar i en tabell i MySQL.

Exempel:

I vår databas skapar vi två tabeller, country och student , med följande begränsningar:PRIMARY KEY (kolumn-id:t i tabellerna country och student ), FOREIGN KEY (kolumnen country_id i tabellen student ), DEFAULT (kolumnnamnet i tabellen student ), UNIQUE (kolumnen name i tabellen country och kolumnen personal_number i tabellen student ), och CHECK (kolumnen age i tabellen student ).

Lösning:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) REFERENCES country(id)
);

Låt oss visa hur MySQL namnger begränsningarna för dessa tabeller som standard. Använd den här frågan för att se dem:

SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM information_schema.table_constraints
WHERE table_name='country' OR table_name='student';

Här är resultatet:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
land PRIMÄRNYCKEL PRIMÄR
land UNIKT namn
student PRIMÄRNYCKEL PRIMÄR
student UNIKT personligt_nummer
student UTLANDSNYCKEL student_ibfk_1
student KONTROLLERA student_chk_1

Diskussion:

När vi skapar våra tabeller sätter vi begränsningar för vissa kolumner. Vi anger dock inte namnen för dessa begränsningar, så de namnges som standard i MySQL. I MySQL är standardtyperna för restriktioner PRIMARY KEY , FOREIGN KEY , UNIQUE och CHECK . Hur genereras standardnamnen för begränsningar?

PRIMARY KEY constraint heter helt enkelt PRIMARY , eftersom det alltid finns en primärnyckel i en tabell. Det finns två begränsningar som heter PRIMARY i resultatet ovan, men tabellerna som de tillhör är olika.

För FOREIGN KEY , namnet följer konventionen:tabellnamnet, ett understreck ('_ ’), ‘ibfk ’, ett annat understreck (‘_ ’), och ett nummer. För vårt exempel är det student_ibfk_1 i tabellen student .

Standardnamnet för en CHECK begränsning liknar den för den främmande nyckeln. Det börjar med tabellnamnet, ett understreck ('_ ’), ‘chk ’, ett annat understreck (‘_ ’), och ett nummer. För vårt exempel är det student_chk_1 i tabellen student .

Standardnamnet på en UNIQUE constraint är namnet på själva kolumnen. För vårt exempel är det personal_number i tabellen student . När det finns flera kolumner med UNIQUE begränsning, den använder namnet på den första kolumnen i definitionen av begränsningen.


  1. Du måste installera postgresql-server-dev-X.Y för att bygga ett tillägg på serversidan eller libpq-dev för att bygga ett klientprogram

  2. MariaDB JSON_CONTAINS() Förklarad

  3. to_date-funktion med sysdate

  4. Använda Oracle JDeveloper 12c med Oracle Database 12c på Oracle Cloud Platform, del 2