Problém:
Chcete znát výchozí názvy omezení v tabulce v MySQL.
Příklad:
V naší databázi vytvoříme dvě tabulky, country a student , s následujícími omezeními:PRIMARY KEY (ID sloupce v tabulkách country a student ), FOREIGN KEY (sloupec country_id v tabulce student ), DEFAULT (název sloupce v tabulce student ), UNIQUE (sloupec name v tabulce country a sloupec personal_number v tabulce student ) a CHECK (sloupec age v tabulce student ).
Řešení:
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) );
Ukážeme si, jak MySQL standardně pojmenovává omezení těchto tabulek. Chcete-li je zobrazit, použijte tento dotaz:
SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME FROM information_schema.table_constraints WHERE table_name='country' OR table_name='student';
Zde je výsledek:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| země | PRIMÁRNÍ KLÍČ | PRIMÁRNÍ |
| země | JEDINEČNÉ | jméno |
| student | PRIMÁRNÍ KLÍČ | PRIMÁRNÍ |
| student | JEDINEČNÉ | personal_number |
| student | CIZI KLÍČ | student_ibfk_1 |
| student | ZKONTROLUJTE | student_chk_1 |
Diskuse:
Když vytváříme naše tabulky, nastavujeme omezení pro některé sloupce. Názvy těchto omezení však nespecifikujeme, takže jsou v MySQL pojmenovány standardně. V MySQL jsou výchozí typy omezení PRIMARY KEY , FOREIGN KEY , UNIQUE a CHECK . Jak se generují výchozí názvy pro omezení?
PRIMARY KEY constraint se jednoduše jmenuje PRIMARY , protože v tabulce je vždy jeden primární klíč. Existují dvě omezení pojmenovaná PRIMARY ve výše uvedeném výsledku, ale tabulky, ke kterým patří, jsou odlišné.
Pro FOREIGN KEY , název se řídí konvencí:název tabulky, podtržítko (‘_ “), „ibfk “, další podtržítko („_ “) a číslo. Pro náš příklad je to student_ibfk_1 v tabulce student .
Výchozí název pro CHECK omezení je podobné jako u cizího klíče. Začíná názvem tabulky, podtržítkem („_ ’), „chk “, další podtržítko („ _ “) a číslo. Pro náš příklad je to student_chk_1 v tabulce student .
Výchozí název UNIQUE omezení je název samotného sloupce. Pro náš příklad je to personal_number v tabulce student . Pokud existuje více sloupců s UNIQUE omezení, používá název prvního sloupce v definici omezení.