2014-02-11 42 views
1

我嘗試使用下面的代碼,以便從表中刪除所有記錄,其中ID是從測試一樣剛剛刪除的記錄:SQL觸發器,參照已刪除的記錄的ID

CREATE TRIGGER usun ON test 
FOR delete 
as 
BEGIN 
    DELETE FROM table WHERE id_test = deleted.id_test; 
END 

此錯誤是由SQL Server 2012顯示:

無法綁定多部分標識符「deleted.id_test」。

我找不到解決此問題的任何解決方案。我試圖寫「舊」而不是「刪除」,沒有任何反應。

+1

來完成,這將是定義在'table.id_test'外鍵創建外鍵約束時引用'usun.id_test'和狀態ON DELETE CASCADE更簡單的方法。如果你這樣做,數據庫將爲你處理清理工作,使你不必編寫這種觸發器。分享並享受。 –

回答

2

deleted是一個表,而不是「記錄」。試試這個:

DELETE FROM table 
    WHERE id_test in (select id_test from deleted.id_test); 
+0

謝謝。它會刪除「table」中的所有行,其中ID與「test」中刪除的行相同? – user3162968

+0

@ user3162968。 。 。是的,這是它應該做的。 –