sql >> Database >  >> RDS >> Sqlserver

Hoe de naam van een beperking in SQL Server te vinden

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


  1. newid() binnen sql-serverfunctie

  2. datetime2 vs datetimeoffset in SQL Server:wat is het verschil?

  3. Wat zijn PLSQL-records in Oracle?

  4. Hoe het aantal bits in een string in MySQL te krijgen - BIT_LENGTH()