おそらく、レースの日付は会議の開始日と終了日の間にある必要があるため、両方を一度に確認できます。また、おそらく、更新だけでなく、新しいレコードについてもこれを確認する必要があります。したがって、次のようなものを使用できます:
CREATE OR REPLACE TRIGGER RaceDateCheck
BEFORE INSERT OR UPDATE ON Race
FOR EACH ROW
DECLARE
meetingStart Meeting.MeetingStartDate%TYPE;
meetingEnd Meeting.MeetingEndDate%TYPE;
BEGIN
SELECT StartDate, EndDate
INTO meetingStart, meetingEnd
FROM Meeting
WHERE MeetingID = :NEW.MeetingID;
IF :NEW.RaceDate < meetingStart
OR :NEW.RaceDate > meetingEnd THEN
RAISE_APPLICATION_ERROR(-20001, 'Invalid race date');
END IF;
END;
終了日のみ:
CREATE OR REPLACE TRIGGER RaceDateCheck
BEFORE INSERT OR UPDATE ON Race
FOR EACH ROW
DECLARE
meetingEnd Meeting.MeetingEndDate%TYPE;
BEGIN
SELECT EndDate
INTO meetingEnd
FROM Meeting
WHERE MeetingID = :NEW.MeetingID;
IF :NEW.RaceDate > meetingEnd THEN
RAISE_APPLICATION_ERROR(-20001, 'Invalid race date');
END IF;
END;