sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kontrollerar jag om en begränsning finns i SQL-servern?

prova detta:

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

-- REDIGERA --

När jag ursprungligen svarade på den här frågan tänkte jag på "Foreign Key" eftersom den ursprungliga frågan ställdes om att hitta "FK_ChannelPlayerSkins_Channels". Sedan dess har många människor kommenterat att hitta andra "begränsningar" här är några andra frågor för det:

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

här är en alternativ metod

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

Om du behöver ännu mer begränsningsinformation, titta in i den systemlagrade proceduren master.sys.sp_helpconstraint för att se hur man får viss information. För att se källkoden med SQL Server Management Studio gå in i "Object Explorer". Därifrån expanderar du "Master"-databasen, expanderar sedan "Programmerbarhet", sedan "Lagrade procedurer", sedan "Systemlagrade procedurer". Du kan sedan hitta "sys.sp_helpconstraint" och högerklicka på den och välja "modifiera". Var bara försiktig så att du inte sparar några ändringar i den. Du kan också helt enkelt använda denna systemlagrade procedur på vilken tabell som helst genom att använda den som EXEC sp_helpconstraint YourTableNameHere .



  1. Returnera en lista över alla serverutlösare i SQL Server

  2. Gillar du Operatör i Entity Framework?

  3. Vilka effekter har användningen av en binär sammanställning?

  4. SQL Server Resumable Index:Är det bra för dig?