在Oracle中创建触发器

时间:2013-12-06 19:50:00

标签: sql oracle triggers

我正在尝试在Oracle SQLPlus中创建一个触发器。触发器处理两个表: 用户{id,name,status} 产品{id,title,price,userid,status};

我希望当用户表更新时,条目的状态更改为2,用户所做的所有产品将更改为i(用于非活动状态)

CREATE OR REPLACE TRIGGER update_offering_status
BEFORE UPDATE ON users
WHEN (new.status = 2)
FOR EACH ROW
DECLARE
Userid INTEGER;
BEGIN
USERID :=  :old.userid;
    UPDATE offering
    SET status = 'i'
    WHERE userid = old.userid;
END;

我收到错误ORA-04077:WHEN子句不能与表级触发器一起使用。但是我不知道如果没有if条款怎么做呢?

2 个答案:

答案 0 :(得分:5)

这种情况正在发生,因为您的WHEN子句位于错误的位置。把它放在FOR EACH ROW之后,你应该全部设定:

CREATE OR REPLACE TRIGGER update_offering_status
BEFORE UPDATE ON users
FOR EACH ROW
WHEN (new.status = 2)

答案 1 :(得分:1)

您应该可以将其放入IF& END IF代替WHEN