sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man hittar namnet på en begränsning i SQL Server

Problem:

Du vill hitta namnen på begränsningarna i en tabell i SQL Server.

Exempel:

Vi vill visa namnen på begränsningarna i tabellen student .

Lösning:

SELECT TABLE_NAME,
       CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;

Här är resultatet:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
student PRIMÄRNYCKEL PK__student__3213E83F357C7D1D
student UNIKT UQ__student__24E2EDD2AC2A7D87
student KONTROLLERA CK__student__age__4E88ABD4
student UTLANDSNYCKEL FK__student__country__4F7CD00D

Diskussion:

Använd vyn table_constraints i information_schema schema. Kolumnen table_name ger dig namnet på tabellen där begränsningen är definierad och kolumnen constraint_name innehåller namnet på begränsningen. Kolumnen constraint_type anger typen av begränsning:PRIMARY KEY för primärnyckeltypen, FOREIGN KEY för den främmande nyckeltypen, UNIQUE för de unika värdena och CHECK för begränsningskontrollen.

Till exempel den primära nyckeln i student tabellen har begränsningsnamnet PK_student_3213E83F357C7D1D . constraint_type kolumnen ger dig information om typen av varje begränsning; för primärnyckeln är det PRIMARY KEY . table_name kolumnen i den här vyn anger vilken tabell som innehåller denna begränsning.

Men om du vill välja DEFAULT begränsning från en databas, använd den här frågan nedan.

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';

Här är resultatet:

namn definition
DF__student__name__4D94879B ("okänt")

Namnet på DEFAULT begränsning lagras i kolumnnamnet, men värdet finns i kolumnen definition . Gå med i vyerna sys.default_constraint s och sys.objects tillåter oss att endast välja data för en given tabell (i vårt exempel, tabellen student ) med hjälp av WHERE-satsen. Begränsningsnamnet innehåller namnet på tabellen (student ) och namnet på kolumnen (name ).


  1. Kontrollera om en tabell refereras av en främmande nyckel i SQL Server med OBJECTPROPERTY()

  2. Hur räknar man antalet förekomster av en karaktär i ett Oracle-varchar-värde?

  3. Hur byter man namn på uppladdad fil innan man sparar den i en katalog?

  4. Naturlig sort som stöder stora siffror