我想從主表中刪除記錄,同時運行我理解的腳本時,我的主表中的Id被引用爲8個其他表中的外鍵。我不想使用CASCADE DELETE,因爲我必須改變表約束。我的主表稱爲Job,其主鍵爲'Id',在其他表中被引用爲外鍵'JobId'。從多個表中刪除外鍵
在從主Job表中刪除之前,如何刪除相關表中的外鍵引用記錄。
這是我的下面的代碼。評論的代碼只是一個預測。
SELECT * FROM [JOB] j WHERE [email protected] AND [email protected] AND [email protected]
AND Id<>@Id AND NOT EXISTS (SELECT * FROM NewJob nj WHERE J.Id=nj.Id)
--DELETE FROM [Table1] a WHERE a.JobId = j.Id AND
--DELETE FROM [Table2] F WHERE f.JobId = j.Id AND
--DELETE FROM [Table3] jct WHERE jct.JobId = j.Id AND
--DELETE FROM [Table4] jch WHERE jch.JobId = j.Id AND
--DELETE FROM [Table5] jedu WHERE jedu.JobId = j.Id AND
--DELETE FROM [Table6] jexp WHERE jexp.JobId = j.Id AND
--DELETE FROM [Table7] jflc WHERE jflc.JobId = j.Id AND
--DELETE FROM [Table8] usj WHERE usj.JobId = j.Id AND
DELETE FROM [JOB] WHERE Id IN (SELECT Id FROM [JOB] WHERE [email protected] AND [email protected] AND [email protected] AND Id<>@Id)
我試着把主表中的數據放到臨時表中,然後在PK/FK關係表上用臨時表的內連接刪除其他表上的內容。 –
'DELETE CASCADE'聽起來像正確的解決方案不知道你爲什麼不想使用它。另一種方法是在事務中創建一個函數來首先刪除所有的外表。 –
你能舉一個例子請 – user1221765