Ich habe diesen TriggerOracle-Trigger auf virtuelle Spalt in Abhängigkeit erzeugen falsche Daten
create or replace trigger upd_totprc_trg
after insert or update or delete of total_price on sales_detail
for each row
declare
v_diff number := 0;
v_master number;
begin
if inserting then
v_master := :new.master_id;
v_diff := :new.total_price;
elsif updating then
v_master := :new.master_id;
v_diff := :new.total_price - :old.total_price;
elsif deleting then
v_master := :old.master_id;
v_diff := :old.total_price * -1;
end if;
update sales_master
set value = value + v_diff
where id = v_master;
end;
/
es die Änderungen in sales_detail.total_price
berechnet und aktualisiert die sales_master.value
.
ist die total_price
Spalte eine virtuelle Spalte definiert als das Produkt aus Menge und unit_price. Wenn ich eine neue Detailzeile eingebe, scheint der Trigger den neuen berechneten Wert nicht zu erfassen, obwohl es ein after
ist. Meine Frage ist: Bewirkt die Ausführung des virtuellen Spaltenausdrucks einen Konflikt mit dem Ausführen des Triggers? Beachten Sie, dass, wenn ich die total_price
wieder als normale Spalte eingab, die richtigen Werte zurückgegeben wurden.
Ich bin mit Oracle 12c