我有Table_A和Table_B具有Table_A FK到Table_B。我想刪除表B中的某些行,所以我有這樣刪除具有完整性約束的行
DELETE FROM TABLE_B
WHERE TABLE_B.id IN(
SELECT TABLE_A.B_id
FROM TABLE_A
WHERE condition
)
所以查詢,如果我嘗試執行此,我從A獲取由於侵犯到FK完整性約束的錯誤
我遇到的問題是,如果我首先從Table_A中刪除有問題的行(與condition
匹配的那些行),則內部SELECT不返回預期結果(因爲這些行已被刪除),所以Delete不會' t按預期工作。
我是完全noob在SQL中,所以我的問題是,我該怎麼做?有沒有辦法存儲內部選擇的結果,然後從Table_A中刪除行,然後從Table_B中刪除?
我不想創建一個新表或任何類似的東西。 謝謝。
此問題爲您提供有關如何短時間禁用約束的信息:http://stackoverflow.com/questions/159038/can-foreign-key-constraints-be-temporarily-disabled-using-t- SQL。或者,你可以看看這裏的級聯刪除約束:http://stackoverflow.com/questions/6260688/sql-server-cascade-delete –