Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment vérifier si une contrainte existe dans le serveur SQL ?

essayez ceci :

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

-- MODIFIER --

Lorsque j'ai initialement répondu à cette question, je pensais à "Foreign Key" car la question initiale demandait de trouver "FK_ChannelPlayerSkins_Channels". Depuis lors, de nombreuses personnes ont commenté la recherche d'autres "contraintes", voici quelques autres requêtes :

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

voici une méthode alternative

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

Si vous avez besoin d'encore plus d'informations sur les contraintes, consultez la procédure stockée système master.sys.sp_helpconstraint pour voir comment obtenir certaines informations. Pour afficher le code source à l'aide de SQL Server Management Studio, accédez à "l'explorateur d'objets". De là, vous développez la base de données "Maître", puis développez "Programmabilité", puis "Procédures stockées", puis "Procédures stockées système". Vous pouvez alors trouver "sys.sp_helpconstraint" et faites un clic droit dessus et sélectionnez "modifier". Veillez simplement à ne pas enregistrer les modifications apportées. En outre, vous pouvez simplement utiliser cette procédure stockée système sur n'importe quelle table en l'utilisant comme EXEC sp_helpconstraint YourTableNameHere .