我需要在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
;
答案 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
(我永远不记得是哪一个)。