sql >> Base de Datos >  >> RDS >> Oracle

Disparadores de prevención

Tienes una fecha de nacimiento. Por lo tanto, debe determinar que el DoB es al menos dieciséis años antes de hoy. Hay varias maneras diferentes de hacer esto; aquí hay uno que usa un literal de intervalo.

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; 

Este disparador también busca actualizaciones, para evitar cambios posteriores que invaliden a un estudiante.

El nombre desencadenante students_biur es solo una convención que uso:el nombre de la tabla con un sufijo que indica *B*antes de *I*nsert *Update* para cada *R*ow.

RAISE_APPLICATION_ERROR es un procedimiento estándar para generar excepciones definidas por el usuario con un mensaje. Saber más.

Oracle reserva el rango de -20999 a -20000 para errores definidos por el usuario; cualquier otro número puede entrar en conflicto con una excepción definida por Oracle.