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

Oracle Trigger ORA-04098:pemicu tidak valid dan validasi ulang gagal

Oracle akan mencoba mengkompilasi ulang objek yang tidak valid seperti yang dirujuk. Di sini pemicu tidak valid, dan setiap kali Anda mencoba memasukkan baris, pemicu akan mencoba mengkompilasi ulang pemicu, dan gagal, yang mengarah ke kesalahan ORA-04098.

Anda dapat select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' untuk melihat kesalahan apa yang sebenarnya didapat oleh pemicu dan mengapa pemicu tidak dapat dikompilasi. Dalam hal ini tampaknya Anda kehilangan titik koma di akhir insert baris:

INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')

Jadi buatlah:

CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
  BEGIN
        INSERT INTO Users (userID, firstName, lastName, password)
        VALUES ('how', 'im', 'testing', 'this trigger');
  END;           
/

Jika Anda mendapatkan peringatan kompilasi saat melakukannya, Anda dapat melakukan show errors jika Anda menggunakan SQL*Plus atau Pengembang SQL, atau kueri user_errors lagi.

Tentu saja, ini mengasumsikan Users . Anda tabel memang memiliki nama kolom itu, dan semuanya varchar2 ... tapi mungkin Anda akan melakukan sesuatu yang lebih menarik dengan pemicunya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memeriksa nomor yang hilang dari serangkaian angka?

  2. Petunjuk Oracle WITH dan MATERIALIZE bertindak sebagai transaksi otonom untuk fungsi

  3. EM12c Sekarang Memungkinkan DB12c untuk Repos

  4. Cara Mengembalikan Daftar Wilayah yang Didukung di Oracle

  5. Oracle RAC N+1 Redundansi