Hallo ,i k zit met een probleem:ik wil een trigger maken om te testen op de leeftijd van iemand, als deze persoon jonger is dan 18 dan moet er een trigger afgaan en een exception geven.
ik test op een kleine testtabel :
create table testdatum
( datum date ) ;
DIT IS MIJN TRIGGER
create or replace trigger controle
after insert or update of datum
on testdatum
for each row
DECLARE
v_datum date ;
v_leeftijd number(3) ;
foute_leeftijd exception ;
BEGIN
select datum into v_datum
from testdatum;
v_leeftijd := floor(months_between(sysdate ,v_datum)/12) ;
if v_leeftijd < 18 then
raise foute_leeftijd ;
end if ;
EXCEPTION
when foute_leeftijd then
dbms_output.put_line('foute leeftijd') ;
END controle ;
als ik nu wil inserten krijg ik de volgende fout :
SQL> insert into testdatum values('11-feb-01') ;
insert into testdatum values('11-feb-01')
*
ERROR at line 1:
ORA-04091: table PROJ10.TESTDATUM is mutating, trigger/function may not see it
ORA-06512: at "PROJ10.CONTROLE", line 8
ORA-04088: error during execution of trigger 'PROJ10.CONTROLE'
Wie kan mij helpen ?
ik test op een kleine testtabel :
create table testdatum
( datum date ) ;
DIT IS MIJN TRIGGER
create or replace trigger controle
after insert or update of datum
on testdatum
for each row
DECLARE
v_datum date ;
v_leeftijd number(3) ;
foute_leeftijd exception ;
BEGIN
select datum into v_datum
from testdatum;
v_leeftijd := floor(months_between(sysdate ,v_datum)/12) ;
if v_leeftijd < 18 then
raise foute_leeftijd ;
end if ;
EXCEPTION
when foute_leeftijd then
dbms_output.put_line('foute leeftijd') ;
END controle ;
als ik nu wil inserten krijg ik de volgende fout :
SQL> insert into testdatum values('11-feb-01') ;
insert into testdatum values('11-feb-01')
*
ERROR at line 1:
ORA-04091: table PROJ10.TESTDATUM is mutating, trigger/function may not see it
ORA-06512: at "PROJ10.CONTROLE", line 8
ORA-04088: error during execution of trigger 'PROJ10.CONTROLE'
Wie kan mij helpen ?