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

ट्रिगर डालने से रोकें

मैंने एक विश्वविद्यालय के व्याख्याता के साथ बातचीत की, जिसने एक सम्मेलन में एक प्रस्तुति देने के बाद पीएल/एसक्यूएल पढ़ाया। मेरी बात पीएल/एसक्यूएल अच्छे अभ्यास पर थी; मेरी एक स्लाइड में बस इतना ही कहा गया है "ट्रिगर का उपयोग न करें"। व्याख्याता ने मुझे बताया कि उन्हें इस तरह की सलाह को पाठ्यक्रम की जरूरतों के साथ सामंजस्य बिठाना मुश्किल लगता है। उन्हें अपने छात्रों को सभी वाक्य रचना सिखाना है, लेकिन उन्होंने स्वीकार किया कि अक्सर वे ऐसे कार्य निर्धारित करते हैं जो समाधान की मांग करते हैं जो हम पेशेवर रूप से सॉफ़्टवेयर लिखते समय उपयोग नहीं करेंगे।

यह एक ऐसा प्रश्न है। चेक बाधा का उपयोग करने का सही तरीका है, जैसे गॉर्डन का उत्तर दिखाता है . बाधाएं अधिक कुशल हैं, और मुहावरेदार भी हैं। लेकिन आपका शिक्षक चाहता है कि आप एक ट्रिगर लिखें, इसलिए यह रहा आपका कोड, ठीक किया गया।

CREATE OR REPLACE TRIGGER CheckAdvance
    BEFORE INSERT OR UPDATE OF advance ON titles
    FOR EACH ROW
BEGIN
    IF (:new.advance < 0  
         OR :new.advance > 100)
    THEN
        raise_application_error(-20000
                , 'Advance cannot be less than zero or greater than one hundred.');
    END IF;
END;

ध्यान देने योग्य बातें:

  1. बनाएँ या बदलें का अर्थ है कि हम प्रारंभिक DROP विवरण के बिना ट्रिगर कोड बदल सकते हैं।
  2. कोड के BEGIN और END फ़्रेम ब्लॉक जैसे ट्रिगर बॉडी।
  3. स्टेटिक कंडीशनल को IF ... END IF कीवर्ड्स के साथ तैयार किया जाता है; लूप कंस्ट्रक्शंस से बाहर निकलने के लिए WHEN है।
  4. संदर्भ तालिका स्तंभ मान :नए (और :OLD) कीवर्ड के साथ - कोलन नोट करें।
  5. अपवाद फेंकने के लिए RAISE_APPLICATION_ERROR का उपयोग करें; त्रुटि संख्या -20999 से -20000 की सीमा में होनी चाहिए जो Oracle उपयोगकर्ता-परिभाषित अपवादों के लिए सुरक्षित रखता है।
  6. अपने त्रुटि संदेश को अर्थपूर्ण बनाएं:अपने उपयोगकर्ताओं को अनुमान लगाने के बजाय उन्हें बताएं कि उन्होंने क्या गलत किया।
  7. अपने कोड को पढ़ने योग्य बनाने के लिए इंडेंटेशन का उपयोग करना सीखें। आपके भावी सहकर्मी इसके लिए आपको धन्यवाद देंगे।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डायनेमिक PL/SQL दिनांक पैरामीटर समय मान के साथ बरकरार रखा गया

  2. Dmp फ़ाइल और लॉग फ़ाइल से Oracle डेटाबेस कैसे आयात करें?

  3. php:oracle ड्राइवर लोड हो रहा है त्रुटि देता है गतिशील पुस्तकालय लोड करने में असमर्थ - निर्दिष्ट प्रक्रिया नहीं मिल सका।

  4. Oracle SQL स्वचालित रूप से VARCHAR बढ़ा हुआ PK बनाता है

  5. DBMS OUTPUT PUT कुछ भी प्रिंट नहीं करता है