如何在子触发器中访问已删除的父表行

时间:2016-04-18 08:37:05

标签: sql sql-server tsql triggers transactions

我有3个表(Main,Detail,SubDetail),带有级联删除关系。 还可以在SubDetail上定义AFTER Trigger来检查一些数据。

SubDetail Trigger需要为一些数据加入Detail表,但是如果是Delete Detail记录,我就无法访问Detail记录。

示例:

SELECT * 
FROM DELETED JOIN Detail on DELETED.DetailId = Detail.Id

如何在SubDetail Trigger ???中访问详细信息表的已删除记录

更新:

为什么Table Hint在我的场景中不起作用?它必须在一次交易中完成所有工作

1 个答案:

答案 0 :(得分:1)

可能你不能加入Defail表,因为Detail表中不存在记录,因为你尝试加入AFTER DELETE并且你有级联删除。您可以使用触发器INSTEAD OF来完成此操作 或者在触发后删除级联删除和删除相关记录 或更改删除表格的顺序