我有一個與父表(TableA)有外鍵關係的表(TableB)。SQL Server - 保持不帶CASCADE和INSTEAD OF觸發器的引用完整性
當我刪除表A中的記錄時,我想通過刪除表B中引用TableA中的刪除記錄的所有記錄來保持參照完整性。
通常我會刪除級聯。但是由於SQL Server中的表結構和針對多個級聯路徑的過度保護措施,對於此特定關係而言,這是不可能的。
我也不能使用INSTEAD OF觸發器,因爲TableA本身具有CASCADE外鍵關係。
我在做的是將TableA和TableB之間的關係改爲ON DELETE SET NULL,然後創建一個AFTER觸發器來清理TableB中的NULL記錄。
有沒有更好的方法來處理這種情況?
你能解釋一下你的意思嗎?「由於表結構和針對多個層疊路徑的過度保護防護措施」,並且可能包括您的表定義? – JohnFx 2012-01-27 17:22:55
我明白,人們的直接想法是看設計,但我認爲這不是特別不合理,在任何情況下,重組都不是一種選擇。所以我只是在尋找如何解決這個問題而不需要重新設計的建議。我認爲這個答案總結了我對SQL Server安全保護[級聯刪除導致多個級聯路徑]的情況和想法(http://stackoverflow.com/a/5407007/295813) – 2012-01-27 17:29:50
只是好奇,什麼現實世界的限制阻止你發佈在子表上刪除,然後在父項上刪除,兩者都可能包含在事務中? – 2012-01-27 17:34:00