Problem:
Sie möchten die Namen der Einschränkungen in einer Tabelle in SQL Server finden.
Beispiel:
Wir wollen die Namen der Constraints in der Tabelle student .
Lösung:
SELECT TABLE_NAME,
CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;
Hier ist das Ergebnis:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| Schüler | PRIMÄRSCHLÜSSEL | PK__student__3213E83F357C7D1D |
| Schüler | EINZIGARTIG | UQ__student__24E2EDD2AC2A7D87 |
| Schüler | ÜBERPRÜFEN | CK__Schüler__Alter__4E88ABD4 |
| Schüler | Fremdschlüssel | FK__student__country__4F7CD00D |
Diskussion:
Verwenden Sie die Ansicht table_constraints im information_schema Schema. Die Spalte table_name gibt Ihnen den Namen der Tabelle, in der die Einschränkung definiert ist, und die Spalte constraint_name enthält den Namen der Einschränkung. Die Spalte constraint_type gibt die Art der Einschränkung an:PRIMARY KEY für den Primärschlüsseltyp FOREIGN KEY für den Fremdschlüsseltyp UNIQUE für die eindeutigen Werte und CHECK für die Constraint-Prüfung.
Zum Beispiel der Primärschlüssel im student Die Tabelle hat den Einschränkungsnamen PK_student_3213E83F357C7D1D . Der constraint_type Spalte gibt Ihnen Informationen über den Typ jeder Einschränkung; für den Primärschlüssel ist es PRIMARY KEY . Der table_name Spalte in dieser Ansicht gibt an, welche Tabelle diese Einschränkung enthält.
Wenn Sie jedoch den DEFAULT auswählen möchten Einschränkung aus einer Datenbank, verwenden Sie diese Abfrage unten.
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';
Hier ist das Ergebnis:
| name | Definition |
|---|---|
| DF__student__name__4D94879B | ("unbekannt") |
Der Name des DEFAULT Einschränkung wird im Spaltennamen gespeichert, aber der Wert befindet sich in der Spalte definition . Verbinden der Ansichten sys.default_constraint s und sys.objects ermöglicht es uns, nur die Daten für eine bestimmte Tabelle auszuwählen (in unserem Beispiel die Tabelle student ) mit der Verwendung der WHERE-Klausel. Der Einschränkungsname enthält den Namen der Tabelle (student ) und den Namen der Spalte (name ).