我尝试创建一个触发器,一旦调度了订单中的所有项目,就将订单日期设置为系统日期。
我们有一个OrderHeader表,其中包含order_id和order_completed。每个订单将有1行
然后,我们将OrderLine表与orderline_order一起使用,并带有OrderHeader的外键。对于相同的orderline_order,此表可以有多行(因此订单的多个项目) Orderline在orderline_fulfilled中有一个字段,它是一个' Y'或者' N'
当所有orderline_fulfilled都是' Y'我想要一个触发器来将order_completed更新为sysdate。为了那个订单。我目前得到了下面的陈述,但我如何确保我只检查orderline_fulfilled是' Y'对于那个orderline_order,如果这是有意义的吗?
create or repalce trigger Order_complete
after update of Orderline_fulfilled
on val354_orderline
begin update val354_orderheader join val354_orderline on (Order_id = Orderline_order)
set Order_completed = sysdate
where Orderline_fulfilled
答案 0 :(得分:0)
我想你想要这样的东西:
CREATE OR REPLACE TRIGGER ORDER_COMPLETE
AFTER UPDATE OF ORDERLINE_FULFILLED
ON VAL354_ORDERLINE
BEGIN
UPDATE VAL354_ORDERHEADER h
SET h.ORDER_COMPLETED = 'Y'
WHERE h.ORDER_COMPLETED = 'N' AND
NOT EXISTS (SELECT *
FROM VAL354_ORDERLINE l
WHERE l.ORDERLINE_ORDER = h.ORDER_ID AND
l.ORDERLINE_FULFILLED = 'N');
END ORDER_COMPLETE;
试一试。
分享并享受