Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-04084:nie można zmienić NOWYCH wartości dla tego typu wyzwalacza

Zgodnie z prośbą w komentarzach zamieszczam swój komentarz jako odpowiedź.

Twój problem polega na tym, że próbujesz zmienić wartość PO utrwaleniu wartości, spróbuj zmienić wyzwalacz na BEFORE jako:

CREATE OR REPLACE TRIGGER TOTAL
  BEFORE 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;
/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrypty uruchamiania i zatrzymywania EBS R12

  2. Jak uzyskać wartość ASCII w Oracle?

  3. zmień tabelę modyfikuj kolumnę w bazie danych Oracle

  4. SQL:trzeba usunąć zduplikowane wiersze w zapytaniu

  5. Zwracanie „tabeli” (bez wstępnego definiowania nazw kolumn) z funkcji PL/SQL