Problém:
Chcete najít názvy omezení v tabulce na serveru SQL.
Příklad:
Názvy omezení chceme zobrazit v tabulce student .
Řešení:
SELECT TABLE_NAME,
CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;
Zde je výsledek:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| student | PRIMÁRNÍ KLÍČ | PK__student__3213E83F357C7D1D |
| student | JEDINEČNÉ | UQ__student__24E2EDD2AC2A7D87 |
| student | ZKONTROLUJTE | CK__student__age__4E88ABD4 |
| student | CIZI KLÍČ | FK__student__country__4F7CD00D |
Diskuse:
Použijte zobrazení table_constraints v information_schema schéma. Sloupec table_name vám dává název tabulky, ve které je omezení definováno, a sloupec constraint_name obsahuje název omezení. Sloupec constraint_type označuje typ omezení:PRIMARY KEY pro typ primárního klíče FOREIGN KEY pro typ cizího klíče UNIQUE pro jedinečné hodnoty a CHECK pro kontrolu omezení.
Například primární klíč v student tabulka má název omezení PK_student_3213E83F357C7D1D . constraint_type sloupec poskytuje informace o typu každého omezení; pro primární klíč je to PRIMARY KEY . table_name sloupec v tomto zobrazení označuje, která tabulka obsahuje toto omezení.
Pokud však chcete vybrat DEFAULT omezení z databáze, použijte tento dotaz níže.
SELECT c.name, c.definition FROM sys.default_constraints c JOIN sys.objects o ON o.object_id = c.parent_object_id WHERE o.name ='student';
Zde je výsledek:
| name | definice |
|---|---|
| DF__student__name__4D94879B | ("neznámé") |
Název DEFAULT omezení je uloženo v názvu sloupce, ale hodnota je ve sloupci definition . Spojení pohledů sys.default_constraint s a sys.objects nám umožňuje vybrat pouze data pro danou tabulku (v našem příkladu tabulka student ) s použitím klauzule WHERE. Název omezení obsahuje název tabulky (student ) a název sloupce (name ).