Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-04084:не може да промени НОВИ стойности за този тип тригер

Както беше поискано в коментарите, правя своя коментар като отговор.

Вашият проблем е, защото се опитвате да промените стойност СЛЕД като стойността е била запазена, опитайте да промените тригера си на BEFORE като:

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. ORA-01779:не може да модифицира колона, която съответства на таблица без запазен ключ

  2. java.security.AccessControlException:достъпът е отказан (java.security.SecurityPermission authProvider.SunMSCAPI)

  3. Разбиране на поведението на функцията remainder() в Oracle

  4. Как мога лесно да анализирам изпълнението на пакет на Oracle за проблеми с производителността?

  5. Какъв е еквивалентът на PostgreSQL на SYSDATE от Oracle?