Hallo Ich habe ein Problem, während ich einen Trigger auf SQL Oracle erstellen.Fehler bei Trigger SQL Oracle
Meine Trigger ist:
create or replace trigger generatePassword
before insert on people
for each row
begin
insert into people(nif,naame,date_birth,sex,adress,email,iban,password)
values (:NEW.nif,:NEW.naame,:NEW.date_birth,:NEW.sex,:NEW.adress,:NEW.email,:NEW.iban,(select round(dbms_random.value(0000,9999)) from dual));
end;
/
Der Trigger erfolgreich erstellt wurde. Dann, wenn ich versuche, den Befehl auszuführen:
insert into people (naame, date_birth, sex, adress, email, iban, nif, id) values ('Albert', '01-12-87', 'M', 'NY', '[email protected]', '000032134537512343231', '523456189', '70');
ich diesen Fehler:
ORA-00036: maximum number of recursive SQL levels (50) exceeded ORA-06512: at "UTF8.GENERATEPASSWORD", line 2 ORA-04088: error during execution of trigger 'UTF8.GENERATEPASSWORD' ORA-06512: at "UTF8.GENERATEPASSWORD", line 2 ORA-04088: error during execution of trigger 'UTF8.GENERATEPASSWORD' ORA-06512: at "UTF8.GENERATEPASSWORD", line 2 ORA-04088: error during execution of trigger 'UTF8.GENERATEPASSWORD' ORA-06512: at "UTF8.GENERATEPASSWORD", line 2 ORA-04088: error during execution of trigger '
Was ist das Problem hier?
Mögliches Duplikat von [PLSQL - Iinsert im Auslöser, der rekursive Schleife verursacht] (http://stackoverflow.com/questions/26851810/plsql-iinsert-in-trigger-causing-recursive-loop) – fvu
Was versuchen Sie zu erreichen ? Wenn ein Trigger auf 'people' versucht, in' people' einzufügen, wirst du in eine endlose Schleife geraten (die anfängliche Einfügung löst den Trigger aus, der eine neue Zeile einfügt, die den Trigger erneut auslöst, der eine neue Zeile einfügt, die die trigger erneut ...). Wenn Sie nur versuchen, den 'Passwort'-Wert von der ursprünglichen Einfügung zu ändern, möchten Sie einfach': new.password: = round (dbms_random.value (0000.9999);.) –
Justin, meinst du so : 'Erstelle oder Trigger Gene vor Einsatz an Menschen für jede Zeile beginnen ersetzen: NEW.password = (round (dbms_random.value (0000,9999)) aus dual; Einsatz in Menschen (NIF, naame, date_birth, sex, adresse, email, iban, passwort) werte (: NEW.nif,: NEW.naame,: NEW.date_birth,: NEW.sex,: NEW.adress,: NEW.email,: NEW.iban, : NEW.password); end; / ' – Blackout