使用when语句创建更新触发器

时间:2015-01-19 14:52:13

标签: sql

我需要在sql上创建触发器。触发器更新值取决于新值。如果值为true,则此表的另一列为false。如果值为false,则此表的另一列为true。我试图使用when或if语句但是出错了。有人会帮助我解决问题。

有我的代码:

CREATE TRIGGER pUSer_update
AFTER UPDATE ON pUser
   REFERENCING OLD ROW AS Old, NEW ROW AS New FOR EACH ROW
     when(New.DELETED=1 AND New.ACTIVE=1)then
        UPDATE pUser SET ACTIVE = 0
     when (New.DELETED=0 AND New.ACTIVE=0)then
         UPDATE pUser SET ACTIVE = 1
         ;

1 个答案:

答案 0 :(得分:1)

我假设您因为语法而使用Oracle。我还假设您要将用户设置为" active"当他被取消删除,并且"不活动"当他被删除。因此,我们会检查deleted中的pUser列何时更新,并根据该列切换active。我认为您需要BEFORE触发器,而不是AFTER触发器。

CREATE TRIGGER pUSer_update
BEFORE UPDATE OF deleted ON pUser
FOR EACH ROW
BEGIN
  SELECT 1 - new.deleted
    INTO :new.active
    FROM dual;
END;
/

您可能需要在new.deleted中使用冒号(:new.deleted)引用SELECT(我永远不记得是哪一个)。