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
).