sql >> Database >  >> RDS >> Oracle

Oracle Trigger ORA-04098:trigger is ongeldig en hervalidatie mislukt

Oracle zal proberen ongeldige objecten, zoals ze worden genoemd, opnieuw te compileren. Hier is de trigger ongeldig, en elke keer dat u een rij probeert in te voegen, wordt geprobeerd de trigger opnieuw te compileren, wat mislukt, wat leidt tot de ORA-04098-fout.

U kunt select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' om te zien welke fout(en) de trigger daadwerkelijk krijgt en waarom deze niet compileert. In dit geval lijkt het erop dat u een puntkomma mist aan het einde van de insert regel:

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

Dus maak het:

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;           
/

Als je een compilatiewaarschuwing krijgt wanneer je dat doet, kun je show errors als u in SQL*Plus of SQL Developer werkt, of user_errors . opvraagt nogmaals.

Dit veronderstelt natuurlijk uw Users tabellen hebben die kolomnamen, en ze zijn allemaal varchar2 ... maar vermoedelijk doe je in werkelijkheid iets interessanters met de trigger.



  1. Verschil tussen TRIM() en TRIM_ORACLE() in MariaDB

  2. Hoe u een kolom voor automatisch verhogen kunt toevoegen aan een bestaande tabel in MySQL

  3. Back-up / herstel SQLlite-database naar map Google Drive-app

  4. Hoe MySQL op Ubuntu te installeren