2015-04-23 2 views
0

im пытается создать триггер для установки даты заказа в системную дату после отправки всех элементов в заказе.Trigger after update orderline

У нас есть таблица OrderHeader с order_id и order_completed. Это будет 1 строка за заказ.

У нас есть таблица OrderLine с orderline_order с внешним ключом OrderHeader. Эта таблица может иметь несколько строк для одного и того же orderline_order (так что несколько элементов для заказа) У заказной линии есть поле в нем orderline_fulfilled, которое является либо «Y», либо «N»

Я хочу, чтобы триггер обновил order_completed до sysdate, когда все orderline_fulfilled являются «Y» для этого порядка. В настоящее время я пришел к заявлению ниже, но как бы я мог убедиться, что только проверка 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

Я думаю, что вы хотите что-то вроде:

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; 

Дайте что попробовать.

Поделитесь и наслаждайтесь

+0

Пробовал это с некоторыми изменениями, но продолжал получать ошибку «строка не найдена» – ghost3h