【问题标题】:Trigger after update orderline更新订单线后触发
【发布时间】:2015-07-02 03:48:54
【问题描述】:

我正在尝试创建一个触发器,以便在订单中的所有商品都已发货后将订单日期设置为系统日期。

我们有一个带有 order_id 和 order_completed 的 OrderHeader 表。每个订单将有 1 行

然后我们有 OrderLine 表,其中 orderline_order 和 OrderHeader 的外键。此表可以有多个相同的 orderline_order 行(因此一个订单有多个项目) Orderline 中有一个字段 orderline_fulfilled,它可以是“Y”或“N”

当该订单的所有 orderline_fulfilled 均为“Y”时,我想要一个触发器将 order_completed 更新为 sysdate。我目前得到了下面的陈述,但是如果有意义的话,我如何确保我只检查该 orderline_order 的 orderline_fulfilled 是 'Y'?

 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

【问题讨论】:

    标签: sql oracle triggers sqlplus


    【解决方案1】:

    我想你想要这样的东西:

    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;
    

    试试看。

    【讨论】:

    • 尝试了一些改动,但不断收到“未找到字符串”错误
    猜你喜欢
    • 2021-11-25
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多