0

在某些情况下,当一条记录被插入到表中时,它应该被拆分为几条记录,这些记录将被插入。

逻辑写在 INSERT 触发器中,该触发器在 INSERT 操作之前触发。在这个触发器内部,我试图执行一个 INSERT 语句,该语句随后会导致触发器的递归调用。但是我不希望这种情况发生。我试图使用 smth 从它的身体上禁用一个触发器

execute immediate 'ALTER TRIGGER sale_trigger DISABLE';

但是,显然这是一个提交操作,因此它在触发器内部不起作用。

如何绕过触发器的递归调用?

编辑我将我的触发器声明为这个declare PRAGMA AUTONOMOUS_TRANSACTION;,现在我可以运行alter语句。但是,当我从同一个触发器禁用触发器时 - PLSQL 开发人员停止工作。我该怎么办?:)

4

1 回答 1

0

不是将第一个插入直接加载到目标表中,而是将记录插入到临时表中。具有麻烦逻辑的触发器应该在暂存表上。如果逻辑不适用,则触发器将该行插入到目标表中。如果逻辑适用,触发器将插入行(如果需要?)并触发对目标表的任何额外插入。定期截断临时表以使其保持小而高效(但可能不是在每次触发操作之后,因为这样效率会降低)。

换句话说:将触发器与其插入的表分离。

于 2013-07-11T14:27:22.193 回答