Probleem:
U wilt de namen van de beperkingen in een tabel in SQL Server vinden.
Voorbeeld:
We willen de namen van de beperkingen weergeven in de tabel student
.
Oplossing:
SELECT TABLE_NAME, CONSTRAINT_TYPE,CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME=’student’;
Hier is het resultaat:
TABLE_NAME | CONSTRRAINT_TYPE | CONSTRRAINT_NAME |
---|---|---|
student | PRIMAIRE SLEUTEL | PK__student__3213E83F357C7D1D |
student | UNIEK | UQ__student__24E2EDD2AC2A7D87 |
student | CONTROLEER | CK__student__age_4E88ABD4 |
student | BUITENLANDSE SLEUTEL | FK__student__country_4F7CD00D |
Discussie:
Gebruik de weergave table_constraints
in het information_schema
schema. De kolom table_name
geeft u de naam van de tabel waarin de beperking is gedefinieerd, en de kolom constraint_name
bevat de naam van de beperking. De kolom constraint_type
geeft het type beperking aan:PRIMARY KEY
voor het primaire sleuteltype, FOREIGN KEY
voor het externe sleuteltype, UNIQUE
voor de unieke waarden, en CHECK
voor de beperkingscontrole.
Bijvoorbeeld de primaire sleutel in de student
tabel heeft de beperkingsnaam PK_student_3213E83F357C7D1D
. De constraint_type
kolom geeft u informatie over het type van elke beperking; voor de primaire sleutel is dit PRIMARY KEY
. De table_name
kolom in deze weergave geeft aan welke tabel deze beperking bevat.
Als u echter de DEFAULT
beperking uit een database, gebruik dan deze query hieronder.
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 is het resultaat:
naam | definitie |
---|---|
DF__student__name__4D94879B | ("onbekend") |
De naam van de DEFAULT
beperking wordt opgeslagen in de kolomnaam, maar de waarde staat in de kolom definition
. Deelnemen aan de weergaven sys.default_constraint
s en sys.objects
stelt ons in staat om alleen de gegevens voor een bepaalde tabel te selecteren (in ons voorbeeld de tabel student
) met behulp van de WHERE-clausule. De naam van de beperking bevat de naam van de tabel (student
) en de naam van de kolom(name
).