あなたには生年月日があります。したがって、DoBが今日より少なくとも16年前であることを確認する必要があります。これを行うにはさまざまな方法があります。これがインターバルリテラルを使用したものです。
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;
このトリガーは更新もチェックし、その後の変更で生徒が無効になるのを防ぎます。
トリガー名students_biur
これは、私が使用する単なる規則です。各* R*owの*B* before * I * nsert * U*pdateを示す接尾辞が付いたテーブル名です。
RAISE_APPLICATION_ERRORは、メッセージとともにユーザー定義の例外をスローするための標準的なプロシージャです。詳細をご覧ください。
Oracleは、ユーザー定義のエラー用に-20999〜-20000の範囲を予約しています。その他の数値は、オラクル定義の例外と衝突する可能性があります。