如何在触发器中停止插入动作

时间:2014-10-04 04:09:18

标签: oracle oracle-apex

我正在使用Oracle Apex。 我需要创建一个用于检查no的触发器。股票是否< 0。 如果没有。库存< 0然后停止插入操作然后向用户提示警告消息。 以下编码剂量不起作用。我的代码出了什么问题?请帮忙。

我的编码:

CREATE OR REPLACE TRIGGER cw_service_b4_trigger
BEFORE INSERT ON cw_serviceline
FOR EACH ROW

DECLARE

 exist_stock number;

BEGIN
    select stock into exist_stock from cw_inventory where inv_id = :new.inv_id;
       if (exist_stock - :new.quantity) < 0 then
         dbms_output.put_line ('Out of Stock');
         return;
       end if;
END;
/

1 个答案:

答案 0 :(得分:4)

你没有抛出任何错误。您的所有触发器都会输出一条消息。

return不会导致INSERT停止,只会导致触发逻辑返回。

相反,您需要引发错误以导致插入失败。

if exist_stock < :new.quantity then
    raise_application_error(-20000, 'Out of stock'); 
end if;