Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So finden Sie den Namen einer Einschränkung in SQL Server

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