如何在触发器中应用序列顺序



在Informix中,当执行触发器时,我需要更新2(两)个表。比方说Table_A和Table_B。在Table_A中,有一个int8(长数据类型)列作为主键。插入新记录时,此主键列将从序列中检索值。这是代码:

sequence_A.nextVal

在Table_B中,有一个外键列引用Table_a中的主键。为了使主键和外键一致,我使用sequence_A.currVal将值插入这个外键列中。

我确实尝试了下面的代码,但Informix给了我语法错误。

create trigger The_Trigger
insert on The_Table referencing new as n
for each row
(
  insert into Table_A(...) value(sequence_A.nextVal, ...)
  insert into Table_B(...) value(sequence_A.currVal, ...)
)

如果我将insert语句分为两个不同的触发器,它就会起作用。因此,我想在The_Table上创建两个触发器。比方说Trigger_A和Trigger_B,我可以知道如何确保Trigger_A将首先执行,然后只执行Thrigger_B吗。我可以指定触发器上的订单执行吗?这能做到吗?如何?

在第一次尝试中,您省略了两个INSERT语句之间的逗号,关键字是VALUES,而不是VALUE:

CREATE TRIGGER The_Trigger
INSERT ON The_Table REFERENCING NEW AS n
FOR EACH ROW
(
    INSERT INTO Table_A(...) VALUES(sequence_A.nextVal, ...),
    INSERT INTO Table_B(...) VALUES(sequence_A.currVal, ...)
)

有了这两个更改,我相信您会有顺序执行。

给定一个足够新的Informix版本,您可以为单个表上的单个事件提供多个触发器。执行顺序是定义触发器的顺序。

相关内容

最新更新