2017-03-05 3 views
-1

Fehler:ORA-04088: Fehler bei der Ausführung von Trigger

ORA-00036: maximum number of recursive SQL levels (50) exceeded 
ORA-00036: maximum number of recursive SQL levels (50) exceeded 
ORA-06512: at "SYS.STANDARD", line 180 
ORA-06512: at "ETRACKER.R_TRACKER_TRI", line 7 
ORA-04088: error during execution of trigger 'ETRACKER.R_TRACKER_TRI' 
ORA-06512: at "ETRACKER.R_TRACKER_TRI", line 24 
ORA-04088: error during execution of trigger 'ETRACKER.R_TRACKER_TRI' 
ORA-06512: at "ETRACKER.R_TRACKER_TRI", line 24 ORA-04088: error during execution of trigger 'ETRACKER.R_TRACK 

Trigger-Code:

create or replace TRIGGER R_TRACKER_TRI 
    before insert on R_TRACKER 
    for each row 
    declare 
    v_number varchar2(15); 
    begin 
     if inserting then 
     :NEW.PROJECT_ID := 1;--PROJECT_ID(1); 
     :NEW.PRO_CREATED := LOCALTIMESTAMP; 
     :NEW.PRO_CREATED_BY := nvl(v('APP_USER'),USER); 

     IF :NEW.RECRUITMENT_TYPE= 'New' THEN 
      SELECT ('NEW/'||TO_CHAR(SYSDATE,'YY') || '/' || (NVL(MAX(SUBSTRB(PROJECT_ID,8)),10000)+1)) into v_number 
      FROM R_TRACKER 
      WHERE SUBSTRB(PROJECT_ID,1,3) = 'NEW'; 

      :NEW.PROJECT_ID := v_number; 
     elsif :NEW.RECRUITMENT_TYPE= 'Replacement' THEN 
      SELECT ('REP/'||TO_CHAR(SYSDATE,'YY') || '/' || (NVL(MAX(SUBSTRB(PROJECT_ID,8)),10000)+1)) into v_number 
      FROM R_TRACKER 
      WHERE SUBSTRB(PROJECT_ID,1,3) = 'REP'; 

      :NEW.PROJECT_ID := v_number;  
     end if; 

     INSERT INTO R_TRACKER (
     PROJECT_ID, 
     PRO_LOC, 
     DESIGNATION, 
     NO_OF_POSITION, 
+3

Warum fügen Sie eine neue Zeile in die Tabelle ein, gegen die der Trigger ausgelöst wird? Welche Werte verwendest du für diesen Insert - die ': new' Pseudorecord-Felder? (Sie brauchen auch Ihre 'v_number' -Variable nicht, Sie können direkt in das': new.project_id'-Feld wählen; Sie brauchen * keine zwei Abfragen für new/replacement, und es wäre viel besser, Sequenzen zu verwenden als die aktuelle max ID + 1). –

+0

Formatierter Fehlerstapel für Lesbarkeit. –

Antwort

0

Da Ihr Trigger rekursive Trigger ist. Sie können this article lesen

0

Ihre Trigger in eine Endlosschleife wird, weil

  • Sie eine Zeilenebene Insert-Trigger auf R_TRACKER gefeuert haben und
  • Sie in derselben Tabelle einen Einsatz machen R_Tracker

Können Sie den vollständigen Triggercode senden?

Verwandte Themen