我有两张桌子
Orders(ID,ORDERDATE,DELIVERYDATE,GOODID,QUANTITY,COLLECTIONFROM,DELIVERYTO,NOTES)
和
ROLLINGSTOCK_ORDER(ORDERID,ROLLINGSTOCKID,DEPARTUREDATE,DELIVERYDATE,ROUTEID)
我在ROLLINGSTOCK_ORDER
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已编译。
警告不会给我任何信息
如何查看警告的详细信息?
触发器对我来说好吗?你能发现问题吗?
由于
答案 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
如果您只需要应用一个逻辑,请使用第一个选项。如果您希望触发器也能处理其他逻辑,请使用第二个版本,通常就是这种情况。