Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक विदेशी कुंजी चेक बाधा को लागू करने के लिए ट्रिगर का उपयोग करना

संभावित रूप से दौड़ की तारीख बैठक की शुरुआत और समाप्ति तिथि के बीच होनी चाहिए, ताकि आप एक ही बार में दोनों की जांच कर सकें; और संभवतः आप इसे नए रिकॉर्ड के लिए जांचना चाहते हैं, न कि केवल अपडेट के लिए। तो आप कुछ इस तरह इस्तेमाल कर सकते हैं:

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ट्रिगर अगर अन्य

  2. SQL त्रुटि:ORA-02291:अखंडता बाधा

  3. ओरेकल तेज पेजिंग क्वेरी

  4. Oracle का उपयोग करके तालिका में XML खाली टैग के लिए डमी मान कैसे प्राप्त करें?

  5. केवल बैकअप SQL स्कीमा?