Проблем:
Искате да знаете имената по подразбиране на ограниченията в таблица в MySQL.
Пример:
В нашата база данни създаваме две таблици, country и student , със следните ограничения:PRIMARY KEY constraint (идентификаторът на колоната в таблиците country и student ), FOREIGN KEY (колоната country_id в таблицата student ), DEFAULT (името на колоната в таблицата student ), UNIQUE (колоната name в таблицата country и колоната personal_number в таблицата student ) и CHECK (колоната age в таблицата student ).
Решение:
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) );
Нека покажем как MySQL наименува ограниченията на тези таблици по подразбиране. Използвайте тази заявка, за да ги видите:
SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME FROM information_schema.table_constraints WHERE table_name='country' OR table_name='student';
Ето резултата:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| държава | ПЪРВИЧЕН КЛЮЧ | ОСНОВНО |
| държава | УНИКАЛНО | име |
| ученик | ПЪРВИЧЕН КЛЮЧ | ОСНОВНО |
| ученик | УНИКАЛНО | личен_номер |
| ученик | ВЪНШЕН КЛЮЧ | student_ibfk_1 |
| ученик | ПРОВЕРКА | student_chk_1 |
Дискусия:
Когато създаваме нашите таблици, ние задаваме ограничения за някои колони. Въпреки това, ние не уточняваме имената за тези ограничения, така че те са именувани по подразбиране в MySQL. В MySQL типовете ограничения по подразбиране са PRIMARY KEY constraint , FOREIGN KEY , UNIQUE и CHECK . Как се генерират имената по подразбиране за ограничения?
Ограничението PRIMARY KEY constraint се нарича просто PRIMARY , защото винаги има един първичен ключ в таблица. Има две ограничения, наречени PRIMARY в резултата по-горе, но таблиците, към които принадлежат, са различни.
За FOREIGN KEY , името следва конвенцията:името на таблицата, долна черта (‘_ “), „ibfk “, друго долно подчертаване („_ “) и число. За нашия пример това е student_ibfk_1 в таблицата student .
Името по подразбиране за CHECK ограничението е подобно на това на външния ключ. Започва с името на таблицата, долна черта (‘_ ’), „chk “, друго долно подчертаване („_ “) и число. За нашия пример това е student_chk_1 в таблицата student .
Името по подразбиране на UNIQUE constraint е името на самата колона. За нашия пример това е personal_number в таблицата student . Когато има няколко колони с UNIQUE ограничение, той използва името на първата колона в дефиницията на ограничението.