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

Wie überprüfe ich, ob eine Einschränkung im Sql-Server vorhanden ist?

versuchen Sie Folgendes:

SELECT
    * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME ='FK_ChannelPlayerSkins_Channels'

-- BEARBEITEN --

Als ich diese Frage ursprünglich beantwortete, dachte ich an „Fremdschlüssel“, weil die ursprüngliche Frage nach dem Finden von „FK_ChannelPlayerSkins_Channels“ fragte. Seitdem haben viele Leute kommentiert, andere "Einschränkungen" zu finden, hier sind einige andere Abfragen dafür:

--Returns one row for each CHECK, UNIQUE, PRIMARY KEY, and/or FOREIGN KEY
SELECT * 
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE CONSTRAINT_NAME='XYZ'  


--Returns one row for each FOREIGN KEY constrain
SELECT * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME='XYZ'


--Returns one row for each CHECK constraint 
SELECT * 
    FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
    WHERE CONSTRAINT_NAME='XYZ'

Hier ist eine alternative Methode

--Returns 1 row for each CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY, and/or DEFAULT
SELECT 
    OBJECT_NAME(OBJECT_ID) AS NameofConstraint
        ,SCHEMA_NAME(schema_id) AS SchemaName
        ,OBJECT_NAME(parent_object_id) AS TableName
        ,type_desc AS ConstraintType
    FROM sys.objects
    WHERE type_desc LIKE '%CONSTRAINT'
        AND OBJECT_NAME(OBJECT_ID)='XYZ'

Wenn Sie noch mehr Einschränkungsinformationen benötigen, sehen Sie sich die gespeicherte Systemprozedur master.sys.sp_helpconstraint an um zu sehen, wie man bestimmte Informationen erhält. Um den Quellcode mit SQL Server Management Studio anzuzeigen, rufen Sie den "Objekt-Explorer" auf. Von dort aus erweitern Sie die „Master“-Datenbank, erweitern dann „Programmierbarkeit“, dann „Stored Procedures“ und dann „System Stored Procedures“. Sie können dann "sys.sp_helpconstraint" finden und mit der rechten Maustaste darauf klicken und "Ändern" auswählen. Achten Sie nur darauf, keine Änderungen daran zu speichern. Außerdem können Sie diese gespeicherte Systemprozedur einfach für jede Tabelle verwenden, indem Sie sie wie EXEC sp_helpconstraint YourTableNameHere verwenden .