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

ट्रिगर बनाना जो डालने पर अपवाद फेंकता है

क्या आप एक अपवाद उठाना चाहते हैं (जो सम्मिलन को सफल होने से रोकेगा)? या क्या आप इन्सर्ट को सफल होने देना चाहते हैं और dbms_output . पर एक स्ट्रिंग लिखना चाहते हैं बफर जो मौजूद हो भी सकता है और नहीं भी हो सकता है और इंसर्ट चलाने वाले इंसान को दिखाया जा सकता है या नहीं भी दिखाया जा सकता है?

किसी भी स्थिति में, आप चाहते हैं कि यह एक पंक्ति-स्तरीय ट्रिगर हो, न कि कथन-स्तरीय ट्रिगर, इसलिए आपको for each row जोड़ना होगा खंड।

CREATE OR REPLACE TRIGGER person_id_trigg
  AFTER INSERT
  ON person
  FOR EACH ROW

अगर आप एक अपवाद उठाना चाहते हैं

BEGIN
  IF( length( :new.id ) <> 11 )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 
                             'The new ID value must have a length of 11' );
  END IF;
END;

यदि आप संभावित रूप से आउटपुट प्रिंट करना चाहते हैं, लेकिन insert . की अनुमति दें सफल होने के लिए

BEGIN
  IF( length( :new.id ) <> 11 )
  THEN
    dbms_output.put_line( 'The new ID value must have a length of 11' );
  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. Oracle SqlPlus - एक फ़ाइल में आउटपुट सहेजना लेकिन स्क्रीन पर नहीं दिखाना

  2. Oracle विभाजन सूचकांक

  3. Oracle - कई मानों के साथ प्रयोग करते समय क्लॉज प्रश्न में, इसे गतिशील बनाते हुए

  4. क्वेरी लागत:वैश्विक अस्थायी तालिकाएँ बनाम संग्रह (आभासी सरणी)

  5. Oracle पर SYSDATE के लिए UTC मान कैसे प्राप्त करें?