0

我写了一个AFTER UPDATE触发器来更新 table 的abc_xyzABC。当有人尝试更新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条件以便仅更新那些特定的行。

4

1 回答 1

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;

分享和享受。

于 2013-06-20T10:59:34.020 回答