【问题标题】:Why a trigger "instead of delete" is not recursive?为什么触发器“而不是删除”不是递归的?
【发布时间】:2021-04-10 18:24:33
【问题描述】:

我想知道如何在不调用同一个触发器的情况下在触发器“而不是 DELETE”内执行 DELETE 查询?它是 SQL 功能吗?有人能解释一下为什么会这样吗?

【问题讨论】:

    标签: sql triggers sql-delete


    【解决方案1】:

    来自docs

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

    之所以如此,是因为微软就是这样决定的。虽然我无法想象递归对INSTEAD OF 有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      相关资源
      最近更新 更多