sql >> Databasteknik >  >> RDS >> Oracle

Förebyggande triggers

Du har ett födelsedatum. Så du måste fastställa att DoB är minst sexton år före idag. Det finns olika sätt att göra detta på; här är en som använder en bokstavlig intervall.

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; 

Den här utlösaren söker också efter uppdateringar för att förhindra att efterföljande ändringar gör en elev ogiltig.

Triggernamnet students_biur är bara en konvention jag använder:tabellnamnet med ett suffix som indikerar *Före *I*setter *U*uppdatering för varje *R*ow.

RAISE_APPLICATION_ERROR är en standardprocedur för att skicka användardefinierade undantag med ett meddelande. Få reda på mer.

Oracle reserverar intervallet -20999 till -20000 för användardefinierade fel; vilket annat nummer som helst kan krocka med ett orakeldefinierat undantag.




  1. Använda olika MySQL-lagringsmotorer i databasdesign

  2. Identifiera materialstycksstrukturen (BOM) i databaser

  3. 4 sätt att få information om en tabells struktur i SQLite

  4. Skillnader mellan utf8 och latin1