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

我有3个表(Main,Detail,SubDetail)与级联删除关系.

还可以在SubDetail上定义AFTER Trigger来检查一些数据.

SubDetail Trigger需要为一些数据连接Detail表,但是如果是Delete Detail记录,我无法访问Detail记录.

例:

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

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

更新:

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

最佳答案 可能您无法加入Defail表,因为您在详细信息表中不存在该记录,因为您尝试加入AFTER DELETE并且您已经级联删除.您可以使用触发器INSTEAD OF来完成此操作

或者在触发后删除级联删除和删除相关记录

或更改删除表格的顺序

点赞