Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como verificar se existe uma restrição no servidor Sql?


tente isso:
SELECT
    * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME ='FK_ChannelPlayerSkins_Channels'

-- EDITAR --

Quando respondi originalmente a essa pergunta, estava pensando em "Foreign Key" porque a pergunta original era sobre encontrar "FK_ChannelPlayerSkins_Channels". Desde então, muitas pessoas comentaram sobre encontrar outras "restrições", aqui estão algumas outras consultas para isso:
--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'

aqui está um método 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 você precisar de ainda mais informações de restrição, consulte o procedimento armazenado do sistema master.sys.sp_helpconstraint para ver como obter certas informações. Para visualizar o código-fonte usando o SQL Server Management Studio, entre no "Object Explorer". A partir daí, você expande o banco de dados "Mestre", depois expande "Programabilidade", depois "Procedimentos armazenados", depois "Procedimentos armazenados do sistema". Você pode então encontrar "sys.sp_helpconstraint" e clicar com o botão direito do mouse e selecionar "modificar". Apenas tome cuidado para não salvar nenhuma alteração nele. Além disso, você pode usar este procedimento armazenado do sistema em qualquer tabela usando-o como EXEC sp_helpconstraint YourTableNameHere .