Oracle警告:执行完成并发出警告

时间:2010-04-25 11:14:14

标签: sql oracle plsql triggers

我有两张桌子

Orders(ID,ORDERDATE,DELIVERYDATE,GOODID,QUANTITY,COLLECTIONFROM,DELIVERYTO,NOTES)

ROLLINGSTOCK_ORDER(ORDERID,ROLLINGSTOCKID,DEPARTUREDATE,DELIVERYDATE,ROUTEID)

我在ROLLINGSTOCK_ORDER

中更新DELIVERYDATE时创建了一个触发器来更新Orders中的DELIVERYDATE
CREATE OR REPLACE TRIGGER TRIGGER_UpdateDeliveryDate
BEFORE UPDATE OF DELIVERYDATE ON Orders 
FOR EACH ROW 
BEGIN    
then
   UPDATE LOCOMOTIVE_DRIVER ld
   set ld.DELIVERYDATE = :new.DELIVERYDATE
   where ld.orderid = :new.id
end if;
END;

当我运行它时,我收到以下消息

  

警告:执行完成后   警告TRIGGER   TRIGGER_UpdateDeliveryDate已编译。

警告不会给我任何信息

  1. 如何查看警告的详细信息?

  2. 触发器对我来说好吗?你能发现问题吗?

  3. 由于

2 个答案:

答案 0 :(得分:0)

你写

BEGIN    
then

这是不正确的语法。你错过了IF吗?

;之后还缺少分号(UPDATE)。


您可能会使用

收到错误
Show Error Trigger TRIGGER_UpdateDeliveryDate

答案 1 :(得分:0)

本周早些时候,您提出了一个关于编写触发器来执行条件更新的问题。我发布了two examples of how to achieve that end。你似乎已经完成了将两个例子混合到一个没有编译的spavined触发器中。

要清楚,您只需要以下其中一项。任

BEFORE UPDATE OF DELIVERYDATE ON Orders

 BEFORE UPDATE ON Orders 
 ... 
    if :new.delivery_date != :old.delivery_date then

如果您只需要应用一个逻辑,请使用第一个选项。如果您希望触发器也能处理其他逻辑,请使用第二个版本,通常就是这种情况。