这是我的代码:
create or replace trigger tr_interdit
before delete on reservation
for each row
DECLARE
V_res_date RESERVATION.DATEFIN%type;
begin
SELECT DATEFIN into V_res_date
FROM reservation
where DATEFIN = :old.DATEFIN;
if V_res_date<add_months(V_res_date,-12)
then RAISE_APPLICATION_ERROR(-20001, 'Date fin na pas depasse un ans');
end if;
end tr_interdit;
/
Run Code Online (Sandbox Code Playgroud)
但是当我删除一行后,即使它不应该被删除,我也会收到这个错误.
这是错误:
删除"DANIEL"."保留",其中ROWID ='AAAFCvAABAAALHhAAA'和ORA_ROWSCN ='3392006'和("NUMR"为空或"NUMR"不为空)ORA-04091:表DANIEL.RESERVATION正在变异,触发/功能可能看不到它ORA-06512:在"DANIEL.TR_INTERDIT",第4行ORA-04088:执行触发器'DANIEL.TR_INTERDIT'时出错