Ich habe einen Trigger mit dem folgenden Code erstelltEine SQL-Ausnahme wurde abgefangen. Der Fehler war: ORA-04098: Trigger ungültig ist und gescheiterte Wieder Validierung
create or replace trigger DTE_SAVE_ORIGINAL_VAL
after update
on attrvaldesc
FOR Each row
when (new.field2 is null)
Declare
attrvaloriginal attrval.attrval_id%TYPE;
attrval_id attrval.attrval_id%TYPE;
language_id attrvaldesc.language_id%type;
storeent_id attrval.storeent_id%type;
PRAGMA AUTONOMOUS_TRANSACTION;
Begin
Dbms_Output.Put_Line(:OLD.attrval_id);
select attrval_id into attrvaloriginal from attrval where identifier = (select identifier||'_original' from attrval where attrval_id= :OLD.attrval_id and storeent_id=10051) and storeent_id=10051;
if (attrvaloriginal > 0) then
Dbms_Output.Put_Line(attrvaloriginal);
Dbms_Output.Put_Line(:NEW.value);
delete from attrval where attrval_id = attrvaloriginal and storeent_id=10051;
commit;
END IF;
End;
Der Auslöser zusammengestellt und wenn ich auslösen einen Job, die attrvaldesc Tabelle aktualisiert, I ist die unter Ausnahme
Ausnahmemeldung konfrontiert:
Ein SQL-Ausnahme abgefangen wurde. Der Fehler war: ORA-04098: Trigger 'WCS_ADMIN_HFI.DTE_SAVE_ORIGINAL_VAL' ist ungültig und gescheiterte Wieder Validierung
Stack-Trace:
com.ibm.commerce.foundation.dataload.exception.DataLoadSQLException: Eine SQL-Ausnahme abgefangen wurde. Der Fehler war: ORA-04098: Trigger 'WCS_ADMIN_HFI.DTE_SAVE_ORIGINAL_VAL' ist ungültig und gescheiterte Wieder Validierung
Um zu überprüfen, ob Fehler in meinem Stecher ich einen
tatSHOW ERRORS TRIGGER DTE_SAVE_ORIGINAL_VAL;
ich die unten zurück
18/1 PLS-00103: das Symbol "DROP"
Ihr Trigger hat keinen "Drop" - Sind Sie sicher, dass Sie die richtige Version geladen haben? Ah, es hat auch keine 18 Zeilen, also hast du es als Teil eines größeren Skripts erstellt und einfach die '/' weggelassen, um den 'create trigger' auszuführen? Sie brauchen das, weil es PL/SQL ist. –
Ja, ich habe nicht hinzugefügt/am Ende. Lass mich das versuchen – Shiva
Es funktioniert jetzt. Danke Alex !! – Shiva