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

चेक बाधा में दिनांक का उपयोग करना, Oracle

दुर्भाग्य से, एक चेक बाधा SYSDATE जैसे फ़ंक्शन का संदर्भ नहीं दे सकती है। आपको एक ट्रिगर बनाने की आवश्यकता होगी जिसने डीएमएल होने पर इन मानों की जाँच की, यानी।

प्रत्येक ROWBEGIN के लिए तालिका 1 पर डालने या अद्यतन करने से पहले
CREATE OR REPLACE TRIGGER trg_check_dates
  BEFORE INSERT OR UPDATE ON table1
  FOR EACH ROW
BEGIN
  IF( :new.CloseDate <= SYSDATE )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 
          'Invalid CloseDate: CloseDate must be greater than the current date - value = ' || 
          to_char( :new.CloseDate, 'YYYY-MM-DD HH24:MI:SS' ) );
  END IF;
  IF( :new.CloseDate > add_months(SYSDATE,12) )
  THEN
    RAISE_APPLICATION_ERROR( -20002, 
         'Invalid CloseDate: CloseDate must be within the next year - value = ' || 
         to_char( :new.CloseDate, 'YYYY-MM-DD HH24:MI:SS' ) );
  END IF;
  IF( :new.StartDate <= add_months(:new.CloseDate,24) )
  THEN
    RAISE_APPLICATION_ERROR( -20002, 
          'Invalid StartDate: StartDate must be within 24 months of the CloseDate - StartDate = ' || 
          to_char( :new.StartDate, 'YYYY-MM-DD HH24:MI:SS' ) ||
          ' CloseDate = ' || to_char( :new.CloseDate , 'YYYY-MM-DD HH24:MI:SS' ) );
  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. ऑरैकल एसक्यूएल से केवल 1 पंक्ति का चयन कैसे करें?

  2. एकाधिक डेटाबेस के अनुरूप ऑनलाइन SQL सिंटैक्स चेकर

  3. Oracle से PostgreSQL में माइग्रेट करने के शीर्ष दस कारण

  4. कैसे जांचें कि संग्रहीत प्रक्रिया मौजूद है या नहीं?

  5. Oracle में बूलियन फील्ड