Вы не можете обновить таблицу, по которой запускается ваш триггер, вы получите ошибку таблицы мутаций ORA-04091.Вы можете обновлять значения в самой строке, используя синтаксис :NEW
, при условии, что это триггер «до».
Хотя мне неясно, что вы имеете в виду под промежуточным итогом;Похоже, у вас есть поле с итоговой суммой на столе;если это основано на других записях в той же таблице (например, у вас есть несколько записей для одного и того же заказа, и вы хотите, чтобы вставленная запись имела сумму всех предыдущих).Если это так, то вы также не можете сделать это, так как вы нажмете ту же ORA-04901.
Если вы обновляете строку, то вы можете настроить полеустановив, например, :NEW.subtotal := :OLD.subtotal - :OLD.value + :NEW.value
, но не уверен, какой будет польза от этого поля.
Было бы полезно посмотреть, какова ваша бизнес-логика и как она подходит для вставки / обновления, ичто вы хотите сделать триггер.Часто с чем-то вроде этого вы действительно хотите использовать процедуру-оболочку для вставки / обновления, а не триггер, но в настоящее время это немного расплывчато.
Чтобы подытог оставался точным, я бы, вероятно,не пытайтесь поддерживать все это, а вместо этого используйте представление, которое имеет аналитическую функцию, вычисляющую это для вас.Гораздо меньше хлопот, по моему опыту.