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