sql >> Database teknologi >  >> RDS >> Oracle

Brug af en trigger til at implementere en begrænsning for kontrol af fremmednøgle

Formentlig skal løbsdatoen ligge mellem mødets start- og slutdato, så du kan tjekke begge dele på én gang; og du vil formentlig også tjekke dette for nye poster, ikke kun opdateringer. Så du kan bruge noget som:

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;

For kun slutdatoen:

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;



  1. Hvordan man laver en graf ved hjælp af PHP fra oracle

  2. Forskellen mellem to uordnede afgrænsede lister (Oracle)

  3. Applikation vs Database Resident Connection Pool

  4. Visual Studio MySQL-datasætfejl