更新后触发器

时间:2013-06-20 10:24:19

标签: sql plsql triggers sql-update

我写了AFTER UPDATE触发器来更新表abc_xyz的列ABC。当有人试图更新同一个表的列ans_mode时,触发器应该触发。 abc_xyz的默认值为0。触发器应将其更新为1

CREATE OR REPLACE TRIGGER switchtrigger
   AFTER UPDATE OF ans_mode
   ON ABC
BEGIN
   UPDATE ABC
      SET abc_xyz = 1
   WHERE abc_xyz= 0 AND ;
END;

我正在尝试编写AND条件,以便只更新那些特定的行。

1 个答案:

答案 0 :(得分:2)

上面的触发器是语句触发器而不是行触发器。 IMO最好让它成为BEFORE UPDATE行触发器,这样你就可以将:NEW值更改为你想要的值:

CREATE OR REPLACE TRIGGER SWITCHTRIGGER
   BEFORE UPDATE OF ANS_MODE ON ABC
   FOR EACH ROW
BEGIN
  IF :OLD.ABC_XYZ = 0 THEN
    :NEW.ABC_XYZ := 1;
  END IF;
END;

分享并享受。