Skip to content
Advertisement

How to create trigger in informix?

I am trying to write a trigger like in the following simplified example:

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;
)

This fails!

Only this works:

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);
)

What am I doing wrong?

Advertisement

Answer

I think you should write a stored procedure with the IF – THEN logic and call that from this trigger. I think triggers support only simple SQL statements, not SPL statements

edit:

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);
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement