2012-03-28 20 views
1

在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, ...) 
) 

如果我将插入语句分成2(两个)不同的触发器,它的工作原理。因此我想在The_Table上创建2个(两个)触发器。比方说,Trigger_A和Trigger_B,我可以知道如何确保Trigger_A先得到执行,然后只有Thrigger_B。我可以在触发器上指定订单执行吗?这可以做到吗?如何?

回答

2

在你的第一次尝试,您省略了两个INSERT语句之间的逗号和关键字值,而不是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的最新版本,您可以为单个表上的单个事件设置多个触发器。执行顺序是定义触发器的顺序。

相关问题