sql >> Database >  >> RDS >> Oracle

Preventietriggers

Je hebt een geboortedatum. U moet dus vaststellen dat de DoB ten minste zestien jaar voor vandaag ligt. Er zijn verschillende manieren om dit te doen; hier is er een die een letterlijke interval gebruikt.

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; 

Deze trigger controleert ook op updates, om te voorkomen dat latere wijzigingen een leerling ongeldig maken.

De triggernaam students_biur is slechts een conventie die ik gebruik:de tabelnaam met een achtervoegsel dat *B*efore *I*nsert *U*pdate voor elke *R*ow aangeeft.

RAISE_APPLICATION_ERROR is een standaardprocedure voor het weggooien van door de gebruiker gedefinieerde uitzonderingen met een bericht. Meer te weten komen.

Oracle reserveert het bereik -20999 tot -20000 voor door de gebruiker gedefinieerde fouten; elk ander nummer kan botsen met een door Oracle gedefinieerde uitzondering.




  1. Voeg bitsgewijze-OF toe in een subquery

  2. Bulk invoegen met SQLAlchemy ORM

  3. Hoe LTRIM_ORACLE() werkt in MariaDB

  4. Stapsgewijze handleiding voor het installeren van MySQL op Windows