Hai una data di nascita. Quindi è necessario determinare che il DoB sia almeno sedici anni prima di oggi. Ci sono vari modi per farlo; eccone uno che usa un intervallo letterale.
create or replace trigger students_biur
before insert or update on students for each row
begin
if (:new.student_birthdate + INTERVAL '15' YEAR ) < sysdate
then
raise_application_error( -20000, 'This student is too young be registered.');
end if;
end;
Questo trigger verifica anche la presenza di aggiornamenti, per evitare che modifiche successive invalidino uno studente.
Il nome del trigger students_biur
è solo una convenzione che uso:il nome della tabella con un suffisso che indica *B*efore *I*nsert *U*pdate per ogni *R*ow.
RAISE_APPLICATION_ERROR è una procedura standard per generare eccezioni definite dall'utente con un messaggio. Scopri di più.
Oracle riserva l'intervallo da -20999 a -20000 per gli errori definiti dall'utente; qualsiasi altro numero può scontrarsi con un'eccezione definita da oracolo.