1

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!

1
  • There are several syntax errors in your code. Perhaps this document will be helpful. Commented Feb 25, 2014 at 12:17

1 Answer 1

1

You have a lot of mistakes in your trigger.

  1. You don't have to declare STARTDATE variable, you should use :new.STARTDATE
  2. Expression WHEN (:new.RACEID) is wrong
  3. You must declare VARIABLE before selecting to it.
  4. Your trigger shouldn't insert into Race. You could raise an error if start date is incorrect.

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;
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.