-1

次のようなテーブルがあります。

StudentID  Student Name   Birthdate Student Birthplace Gender Height Weight 
--------- --------------- --------- ------------------ ------ ------ ------ 
83        Adam Stone      30-JUN-94 Towson, USA        M      193    88               
84        Stephanie Love  17-JUN-93 KL,Malaysia        F      176    67                 
85        Rachel Kim      17-FEB-92 Seoul, South Korea F      179    56   

15 歳未満の学生が学生のテーブルに格納されないようにするトリガーを作成するにはどうすればよいですか?

4

1 に答える 1

4

あなたには生年月日があります。そのため、DoB が今日より少なくとも 16 年前であることを確認する必要があります。これにはさまざまな方法があります。これはintervalliteralを使用したものです。

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*efore *I*insert *U*pdate を示すサフィックスが付いています。

RAISE_APPLICATION_ERROR は、ユーザー定義の例外をメッセージとともにスローするための標準的な手順です。 詳細をご覧ください

Oracle では、ユーザー定義のエラー用に -20999 ~ -20000 の範囲が予約されています。その他の数値は、オラクル定義の例外と衝突する可能性があります。

于 2012-09-11T07:21:46.700 に答える