How to check if a Constraint exists in Sql server?

前端 未结 13 2029
无人及你
无人及你 2020-11-29 15:03

I have this sql:

ALTER TABLE dbo.ChannelPlayerSkins
    DROP CONSTRAINT FK_ChannelPlayerSkins_Channels

but apparently, on some other databa

13条回答
  •  时光说笑
    2020-11-29 15:43

    I use this to check for and remote constraints on a column. It should have everything you need.

    DECLARE
      @ps_TableName VARCHAR(300)
      , @ps_ColumnName VARCHAR(300)
    
    SET @ps_TableName = 'mytable'
    SET @ps_ColumnName = 'mycolumn'
    
    DECLARE c_ConsList CURSOR LOCAL STATIC FORWARD_ONLY FOR
        SELECT
        'ALTER TABLE ' + RTRIM(tb.name) + ' drop constraint ' + sco.name AS csql
        FROM
            sys.Objects tb
            INNER JOIN sys.Columns tc on (tb.Object_id = tc.object_id)
            INNER JOIN sys.sysconstraints sc ON (tc.Object_ID = sc.id and tc.column_id = sc.colid)
            INNER JOIN sys.objects sco ON (sc.Constid = sco.object_id)
        where
            tb.name=@ps_TableName
            AND tc.name=@ps_ColumnName
    OPEN c_ConsList
    FETCH c_ConsList INTO @ls_SQL
    WHILE (@@FETCH_STATUS = 0) BEGIN
    
        IF RTRIM(ISNULL(@ls_SQL, '')) <> '' BEGIN
            EXECUTE(@ls_SQL)
        END
        FETCH c_ConsList INTO @ls_SQL
    END
    CLOSE c_ConsList
    DEALLOCATE c_ConsList
    

提交回复
热议问题