Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-04084:tidak dapat mengubah nilai BARU untuk jenis pemicu ini

Seperti yang diminta dalam komentar, saya membuat komentar saya sebagai jawaban.

Masalah Anda adalah karena Anda mencoba mengubah nilai SETELAH nilai dipertahankan, coba ubah pemicu Anda ke BEFORE sebagai:

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. mengganti tanda kurung siku dari string dengan fungsi Oracle REGEXP_REPLACE

  2. Kesalahan indeks tidak terdefinisi saat mendapatkan hasil menggunakan nama bidang di koneksi Oracle pdo

  3. Mengkonsumsi layanan web dari Oracle PL/SQL

  4. SQL beberapa kolom dalam klausa IN

  5. Memperbarui Tabel Di Oracle Jika Nilai Bidang Apa Pun Null Dan Menentukan Bahwa Pembaruan Berhasil