在Oracle PLSQL中创建触发器时出错

时间:2017-11-30 04:33:18

标签: sql oracle

我是学生在Oracle学习SQL。我正在创建一个触发器,在触发器中我正在调用一个过程update_price_history(item_id,NEW.price)。

这是我所做的陈述,

CREATE OR REPLACE TRIGGER upd_hist_trg
BEFORE INSERT OR UPDATE OF price ON Item
FOR EACH ROW
BEGIN
 IF :NEW.price != price THEN
 update_price_history(item_id, NEW.price)
 END IF;
END;

我以为我有一切正确,但我收到一条错误消息: 错误(3,2):PLS-00103:在期待以下之一时遇到符号“END”:: =。 (%;符号“;”代替“END”继续。

我一直想弄清楚我出错了什么,我不知道它是什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你最后忘记了分号

...
update_price_history(item_id, :NEW.price);
...

答案 1 :(得分:0)

试试这个:

CREATE OR REPLACE TRIGGER upd_hist_trg
BEFORE INSERT OR UPDATE OF price ON Item
FOR EACH ROW
DECLARE
 item_id number;
BEGIN
 IF :NEW.price != price THEN
 update_price_history(item_id, :NEW.price);
 END IF;
END;

您在:前面忘了new,在程序后忘了;分号。顺便说一句,我看不到item_id的任何变量定义。