Presumiblemente, la fecha de la carrera debe estar entre la fecha de inicio y finalización de la reunión, por lo que podría verificar ambas a la vez; y también, presumiblemente, desea verificar esto en busca de nuevos registros, no solo actualizaciones. Así que podrías usar algo como:
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;
Solo para la fecha de finalización:
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;