【问题标题】:Is there a way to activate a trigger from inside a trigger with a stored procedure?有没有办法通过存储过程从触发器内部激活触发器?
【发布时间】:2019-05-20 15:32:31
【问题描述】:

我有一个“A”表,它有一个触发器,可以从上传到我的程序的 pdf 文档中提取信息。但是,有时此 pdf 文件包含多个文档。因此,我在触发器末尾执行了一个存储过程,将文档分隔在同一个 pdf 文件中,然后将包含新文档的另一行重新插入到表“A”中以激活触发器。我的问题:触发器未再次激活,表“A”发生更改但触发器未激活。

【问题讨论】:

  • 你的触发器没有被激活是什么意思?把触发器想象成一个事件。当桌子发生事情时它会触发。因此,如果您有 INSERT 触发器,则不会触发 UPDATE。如果您需要帮助,请先阅读how to ask

标签: sql-server stored-procedures triggers


【解决方案1】:

很可能,您需要在数据库中打开“递归触发器”选项。

默认情况下,如果触发器修改了创建触发器的同一个表,触发器将不会再次触发。要允许这种情况发生,请使用:

ALTER DATABASE MyDatabase 
SET RECURSIVE_TRIGGERS ON;

注意:如果您有一个直接修改其表的触发器,这可能会导致问题。如果这是或可能是一个问题,那么另一种解决方案是将您希望激活触发器的操作放入队列中,并让触发器自然激活。

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 2019-06-24
    • 1970-01-01
    • 2018-01-18
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多