ORA-04084: kann nicht ändern die NEUEN Werte für diese trigger-Typ
Ich versuche zu drehen, pl/sql-trigger berechnet die Summe einiger Zellen in der Tabelle, wenn die Geschichte geändert wird. Dies ist der code:
ALTER session SET nls_date_format='dd/mm/yyyy';
CREATE OR REPLACE TRIGGER TOTAL
AFTER UPDATE OR INSERT ON ORDER_ITEMS
FOR EACH ROW
DECLARE
temp NUMBER;
today DATE;
BEGIN
temp:=(:NEW.item_price-:NEW.discount_amount)*:NEW.quantity;
today := CURRENT_DATE;
:NEW.TOTAL := temp;
dbms_output.put_line('Updated on:' ||today || ' item number: ' ||:NEW.item_id|| 'order number:' ||:NEW.order_id|| 'total: ' ||:NEW.total);
END;
/
show errors
insert into order_items (ITEM_ID, ORDER_ID, PRODUCT_ID, ITEM_PRICE, discount_amount, QUANTITY)
VALUES (13, 7, 3, 553, 209, 2);
Und ich bekomme diese Fehlermeldung:
- 00000 - "nicht ändern" NEUE Werte für diese trigger-Typ"
*Ursache: Neue trigger-Variablen können nur geändert werden, bevor die Zeile
insert-oder update-Trigger.
*Aktion: Ändern Sie den trigger-Typ oder entfernen Sie die variable Referenz. Keine Fehler. 1 Zeilen eingefügt, Aktualisiert am:06/01/2016 Artikelnummer: 13order
Anzahl:7total:
Verstehe ich, dass das problem der Aktualisierung einer Tabelle während der trigger-Ausführung, verursacht durch ein update auf die gleiche Tabelle.
- Ihr problem ist, weil Sie versuchen, um den Wert zu ändern, NACHDEM der Wert gespeichert wurde, versuchen Sie, den Auslöser zu, BEVOR Sie und sehen, was passiert.
- Wie Jorge gesagt: ändern
AFTER UPDATE OR INSERT
zuBEFORE UPDATE OR INSERT
- Siehe auch Dokumentation, speziell hier die Letzte Einschränkung in der Liste.
- hey, vielen Dank dafür! mein problem gelöst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gewünscht in den Kommentaren mache ich meinen Kommentar als Antwort.
Dein problem ist, weil Sie versuchen, um den Wert zu ändern, NACHDEM der Wert gespeichert wurde, versuchen Sie, den Auslöser zu
BEFORE
als: