【问题标题】:Creating a Trigger in Oracle在 Oracle 中创建触发器
【发布时间】:2013-12-24 07:19:36
【问题描述】:

我正在尝试在 Oracle SQLPlus 中创建触发器。触发器处理两个表: 用户{id,名称,状态} 产品{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 子句不能与表级触发器一起使用。但是我不知道没有when子句怎么办?

【问题讨论】:

    标签: sql oracle triggers


    【解决方案1】:

    发生这种情况是因为您的 WHEN 子句放错了位置。把它放在FOR EACH ROW 之后,你就应该准备好了:

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

    【讨论】:

      【解决方案2】:

      您应该可以将其放入 IFEND IF 而不是 WHEN

      【讨论】:

        猜你喜欢
        • 2018-02-07
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        • 2014-10-28
        相关资源
        最近更新 更多