Нет необходимости в SELECT, просто получить доступ к старому значению напрямую.
Ваше состояние v_res_date < add_months(v_res_date,-12)
никогда не будет верным.
Полагаю, вы не хотите использовать v_res_date
в вызове add_months()
, но сравните значение :old.DATEFIN
с "текущей датой" - sysdate
create or replace trigger tr_interdit
before delete on reservation
for each row
begin
if :old.DATEFIN < add_months(sysdate,-12)
then RAISE_APPLICATION_ERROR(-20001, 'Date fin na pas depasse un ans');
end if;
end tr_interdit;
/