Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Präventionsauslöser

Sie haben ein Geburtsdatum. Sie müssen also feststellen, dass das Geburtsdatum mindestens sechzehn Jahre vor dem heutigen Tag liegt. Es gibt verschiedene Möglichkeiten, dies zu tun; Hier ist eines, das ein Intervallliteral verwendet.

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; 

Dieser Auslöser sucht auch nach Aktualisierungen, um zu verhindern, dass nachfolgende Änderungen einen Schüler ungültig machen.

Der Auslösername students_biur ist nur eine Konvention, die ich verwende:der Tabellenname mit einem Suffix, das *B*bevor *I*nsert *U*pdate for every *R*ow.

angibt

RAISE_APPLICATION_ERROR ist eine Standardprozedur zum Auslösen benutzerdefinierter Ausnahmen mit einer Nachricht. Finde mehr heraus.

Oracle reserviert den Bereich -20999 bis -20000 für benutzerdefinierte Fehler; jede andere Zahl kann mit einer von Orakel definierten Ausnahme kollidieren.