環境:SQL SERVER2008
情況:有時候,刪除表數據(delete方式),會受到外鍵約束,導致刪除失敗
注意:該方式,僅對delete能用,truncate無效(truncate刪除數據,還是會受到外鍵影響,除非刪除外鍵,然后刪除數據,再重新建立外鍵約束,網上有人說可以,但我測試過,依然提示外鍵約束問題)
解決辦法:關閉檢查約束 → 刪除數據 → 約束打開
1)查詢出,關閉外鍵約束的SQL
SELECT 'ALTER TABLE ' + O.NAME + ' NOCHECK CONSTRAINT [' + F.NAME + '];' AS COMMAND FROM SYS.FOREIGN_KEYS F INNER JOIN SYS.ALL_OBJECTS O ON F.PARENT_OBJECT_ID = O.OBJECT_ID WHERE O.TYPE = 'U' AND F.TYPE = 'F';
2)查詢出,打開外鍵約束的SQL
SELECT 'ALTER TABLE ' + O.NAME + ' CHECK CONSTRAINT [' + F.NAME + '];' AS COMMAND FROM SYS.FOREIGN_KEYS F INNER JOIN SYS.ALL_OBJECTS O ON F.PARENT_OBJECT_ID = O.OBJECT_ID WHERE O.TYPE = 'U' AND F.TYPE = 'F';