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:

  1. 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 zu BEFORE UPDATE OR INSERT
  • Siehe auch Dokumentation, speziell hier die Letzte Einschränkung in der Liste.
  • hey, vielen Dank dafür! mein problem gelöst.
InformationsquelleAutor RD7 | 2016-01-06
Schreibe einen Kommentar