INSERT触发器,其中包含INSERT语句

时间:2013-07-11 12:47:01

标签: sql plsql triggers insert

在某些情况下,如果将记录插入表中,则应将其拆分为几条记录,而这些记录将被插入。

逻辑写入INSERT触发器,该触发器在INSERT操作之前触发。在这个触发器内部,我试图执行一个INSERT语句,该语句随后会导致触发器的递归调用。但是,我不希望这种情况发生。我尝试使用类似

的smth来禁用其身体的触发器

execute immediate 'ALTER TRIGGER sale_trigger DISABLE';

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

如何解决触发器的这种递归调用?

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

1 个答案:

答案 0 :(得分:0)

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

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