Триггер для суммирования значений столбца всех строк и сохранения в столбце

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть две таблицы в oracle.

invoice(id_invoice, description, price)

product_invoice(id,id_invoice, description, price, quantity, final_price)

Я хочу сделать «сумму» столбца «final_price» со всеми строками с одинаковым «id_invoice» и сохранить его в таблице invoice. Я пытаюсь использовать триггеры, но это не работает. Вот мой триггер

 create or replace NONEDITIONABLE TRIGGER updateukupno AFTER insert ON stavkaotpremnice FOR EACH ROW BEGIN
UPDATE invoice a
SET a.price = 
    (SELECT SUM(final_price) 
       FROM product_invoice
      WHERE id_invoice = a.id_invoice)
 WHERE a.id_invoice = :NEW.id_invoice;
END;
 

Ответ №1:

Я думаю, что этот тип логики обычно выражается постепенно:

 UPDATE invoice i
    SET price = price   coalesce(:new.final_price, 0)) 
    WHERE i.id_invoice = :NEW.id_invoice;