How do I drop a foreign key constraint only if it exists in sql server?

前端 未结 11 1627
礼貌的吻别
礼貌的吻别 2020-12-04 05:34

I can drop a table if it exists using the following code but do not know how to do the same with a constraint:

IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJE         


        
11条回答
  •  情歌与酒
    2020-12-04 06:07

    I think this will helpful to you...

        DECLARE @ConstraintName nvarchar(200)
    SELECT 
        @ConstraintName = KCU.CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC 
    INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
        ON KCU.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG  
        AND KCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA 
        AND KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
    WHERE
        KCU.TABLE_NAME = 'TABLE_NAME' AND
        KCU.COLUMN_NAME = 'TABLE_COLUMN_NAME'
    IF @ConstraintName IS NOT NULL EXEC('alter table TABLE_NAME drop  CONSTRAINT ' + @ConstraintName)
    

    It will delete foreign Key Constraint based on specific table and column.

提交回复
热议问题