Sql-Server
SQL Server 中同一個表的兩個關係
我有兩張桌子。當我刪除 中的一行時
Table1
,我想將ID
所有行中的該行設置Table2
為 NULL。我有兩個關係Table1
。問題是:我只能設置一個刪除規則:設置 NULL。如果我嘗試設置另一個失敗。但是當我嘗試從中刪除
ID 1
時Table1
,這現在也失敗了。我的表數據如下所示:
表格1:
ID Text 1 Hoi 2 Hoi
表2:
ID ForeignID1 ForeignID2 1 1 2 2 1 1
我需要如何設置約束,以便在
Table2
刪除行時將 Foreign IDs 設置為 NULLTable1
?
約束是不可能的。查看多個級聯操作。
在由 DELETE 或 UPDATE 產生的所有級聯引用操作的列表中,任何表都不能出現多次。
您可以使用 an 而不是觸發器,而不是在
Table2
delete in 之前執行 update inTable1
。觸發器可能看起來像這樣
create trigger Table1_Delete on Table1 instead of delete as update Table2 set Table1ID1 = null where Table2.Table1ID1 in (select D.Table1ID from deleted as D); update Table2 set Table1ID2 = null where Table2.Table1ID2 in (select D.Table1ID from deleted as D); delete from Table1 where Table1.Table1ID in (select D.Table1ID from deleted as D);