微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么触发器“而不是删除”不是递归的?

如何解决为什么触发器“而不是删除”不是递归的?

我想知道如何在不调用相同触发器的情况下在触发器“而不是删除”中执行 DELETE 查询?它是 sql 功能吗?有人可以解释为什么它会这样工作吗?

解决方法

来自docs

如果在表上定义的 INSTEAD OF 触发器针对该表运行通常会再次触发 INSTEAD OF 触发器的语句,则不会递归调用该触发器。相反,该语句就像表没有 INSTEAD OF 触发器一样进行处理,并启动约束操作链和 AFTER 触发器执行。例如,如果触发器被定义为表的 INSTEAD OF INSERT 触发器。并且,触发器在同一个表上运行 INSERT 语句,由 INSTEAD OF 触发器启动的 INSERT 语句不会再次调用触发器。触发器启动的 INSERT 开始运行约束操作并触发为表定义的任何 AFTER INSERT 触发器。

它是这样运作的,因为这是微软的决定。虽然我无法想象递归会对 INSTEAD OF 有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。