Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come verificare se esiste un vincolo nel server SQL?

prova questo:

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

-- MODIFICA --

Quando inizialmente ho risposto a questa domanda, stavo pensando "Foreign Key" perché la domanda originale chiedeva di trovare "FK_ChannelPlayerSkins_Channels". Da allora molte persone hanno commentato di aver trovato altri "vincoli", ecco alcune altre domande per questo:

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

ecco un metodo alternativo

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

Se hai bisogno di ulteriori informazioni sui vincoli, guarda all'interno della stored procedure di sistema master.sys.sp_helpconstraint per vedere come ottenere determinate informazioni. Per visualizzare il codice sorgente utilizzando SQL Server Management Studio, accedere a "Esplora oggetti". Da lì espandi il database "Master", quindi espandi "Programmabilità", quindi "Procedure archiviate", quindi "Procedure archiviate di sistema". È quindi possibile trovare "sys.sp_helpconstraint" e fare clic con il pulsante destro del mouse e selezionare "modifica". Fai solo attenzione a non salvare alcuna modifica. Inoltre, puoi semplicemente utilizzare questa procedura memorizzata di sistema su qualsiasi tabella utilizzandola come EXEC sp_helpconstraint YourTableNameHere .