-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,
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). –
Formatierter Fehlerstapel für Lesbarkeit. –