Pet*_*erP 3 sql database informix triggers
我正在尝试编写如下简化示例中的触发器:
create trigger adr_trg update of fname, lname on adr
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
(
IF o.fname <> n.fname THEN
insert into adrlog (old_value, new_value)
values (o.fname, n.fname);
END IF;
IF o.lname <> n.lname THEN
insert into adrlog (old_value, new_value)
values (o.lname, n.lname);
END IF;
)
Run Code Online (Sandbox Code Playgroud)
这失败了!
只有这样有效:
create trigger adr_trg update of fname, lname on adr
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
(
insert into adrlog (old_value, new_value)
values (o.fname, n.fname);
)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我认为您应该使用 IF - THEN 逻辑编写一个存储过程并从此触发器调用它。我认为触发器只支持简单的 SQL 语句,不支持 SPL 语句
编辑:
CREATE PROCEDURE proc1()
REFERENCING OLD AS o NEW AS n FOR tab1;
....your logic
CREATE TRIGGER adr_trg update of fname, lname on adr
REFERENCING OLD AS o NEW AS n
FOR EACH ROW(EXECUTE PROCEDURE proc1() WITH TRIGGER REFERENCES);
Run Code Online (Sandbox Code Playgroud)