How can foreign key constraints be temporarily disabled using T-SQL?

后端 未结 16 2301
Happy的楠姐
Happy的楠姐 2020-11-22 04:57

Are disabling and enabling foreign key constraints supported in SQL Server? Or is my only option to drop and then re-create

16条回答
  •  忘掉有多难
    2020-11-22 05:32

    To disable the constraint you have ALTER the table using NOCHECK

    ALTER TABLE [TABLE_NAME] NOCHECK CONSTRAINT [ALL|CONSTRAINT_NAME]
    

    To enable you to have to use double CHECK:

    ALTER TABLE [TABLE_NAME] WITH CHECK CHECK CONSTRAINT [ALL|CONSTRAINT_NAME]
    
    • Pay attention to the double CHECK CHECK when enabling.
    • ALL means for all constraints in the table.

    Once completed, if you need to check the status, use this script to list the constraint status. Will be very helpfull:

        SELECT (CASE 
            WHEN OBJECTPROPERTY(CONSTID, 'CNSTISDISABLED') = 0 THEN 'ENABLED'
            ELSE 'DISABLED'
            END) AS STATUS,
            OBJECT_NAME(CONSTID) AS CONSTRAINT_NAME,
            OBJECT_NAME(FKEYID) AS TABLE_NAME,
            COL_NAME(FKEYID, FKEY) AS COLUMN_NAME,
            OBJECT_NAME(RKEYID) AS REFERENCED_TABLE_NAME,
            COL_NAME(RKEYID, RKEY) AS REFERENCED_COLUMN_NAME
       FROM SYSFOREIGNKEYS
    ORDER BY TABLE_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME, KEYNO 
    

提交回复
热议问题