Reputation: 139
I am trying to create a trigger in a table called race that enforces a constraint which is "STARTDATE<=MEETING.ENDDATE"
in other words startdate from the race table must be less than or equals to to the enddate of the meetings table (THE STARTDATE CANNOT BE RUN AFTER THIS DATE!)
I would like the trigger to fire when adding a record to the race table and the startdate entered is wrong (startdate is after the enddate of the meetings table)
I have created this so far but I don't know if I'm right or how I finish it!
CREATE OR REPLACE TRIGGER race_date_trg
BEFORE INSERT OR UPDATE
ON RACE
FOR EACH ROW
WHEN (NEW.RACEID)
DECLARE STARTDATE DATE;
BEGIN
SELECT * FROM meeting INTO VARIABLE
IF STARTDATE <= ENDDATE THEN
INSERT INTO RACE (STARTDATE) VALUES (:n.startdate);
else
end (race_date_trg);
Thank-you for your help!
Upvotes: 1
Views: 302
Reputation: 126
You have a lot of mistakes in your trigger.
The trigger could look like this:
CREATE OR REPLACE TRIGGER race_date_trg
BEFORE INSERT OR UPDATE
ON RACE
FOR EACH ROW
DECLARE
MEETING_ENDDATE DATE;
BEGIN
SELECT ENDDATE INTO MEETING_ENDDATE FROM meeting;
IF :NEW.STARTDATE > MEETING_ENDDATE THEN
RAISE_APPLICATION_ERROR(-20000, 'Wrong start date!');
END IF:
end race_date_trg;
Upvotes: 1