だから私は2つのテーブル、人と予約しています。人が予約をしようとしたときに登録したい日と予約が開かれた日の差が2か月以上ある場合は、予約が遅すぎるというエラーが画面に表示されます。ここで私が作ったトリガーである:(注:外部キーとして予約表の行為でPEOPLEID)PL/SQL ORACLE:months_betweenのトリガーは何もしていません
create or replace trigger reservings
before insert OR UPDATE on RESERVATION
for each row
declare
vdate DATE;
vadd number;
begin
select date_to_register into vdate from PEOPLE WHERE PEOPLEID=:NEW.PEOPLEID;
vadd:=TRUNC(MONTHS_BETWEEN(vdate,:NEW.RESERVATIONDATE));
if INSERTING AND vadd>2 then
Raise_Application_Error (-20343, 'ITS TOO EARLY');
ELSIF UPDATING AND vadd>2 then
Raise_Application_Error (-20343, 'ITS TOO EARLY');
end if;
end;
私はこれを実行するときに、トリガがコンパイルされるが、私は、人がよいでしょうときの日付を入力するとき予約を行い、実際に予約日が2ヶ月を超えている場合は、エラーを投げるのではなく、データを入力することができます。何が起こっていますか? :/ HERESに私は予約テーブルに挿入するもの:
INSERT INTO RESERVATION(ID,PEOPLEID,RESERVATIONDATE) VALUES(1,1,(TO_DATE('11/12/2018', 'DD/MM/YYYY')));
ような何か: 'PEOPLEID = 1人々からdate_to_register選択;' – I3rutt