मैंने एक विश्वविद्यालय के व्याख्याता के साथ बातचीत की, जिसने एक सम्मेलन में एक प्रस्तुति देने के बाद पीएल/एसक्यूएल पढ़ाया। मेरी बात पीएल/एसक्यूएल अच्छे अभ्यास पर थी; मेरी एक स्लाइड में बस इतना ही कहा गया है "ट्रिगर का उपयोग न करें"। व्याख्याता ने मुझे बताया कि उन्हें इस तरह की सलाह को पाठ्यक्रम की जरूरतों के साथ सामंजस्य बिठाना मुश्किल लगता है। उन्हें अपने छात्रों को सभी वाक्य रचना सिखाना है, लेकिन उन्होंने स्वीकार किया कि अक्सर वे ऐसे कार्य निर्धारित करते हैं जो समाधान की मांग करते हैं जो हम पेशेवर रूप से सॉफ़्टवेयर लिखते समय उपयोग नहीं करेंगे।
यह एक ऐसा प्रश्न है। चेक बाधा का उपयोग करने का सही तरीका है, जैसे गॉर्डन का उत्तर दिखाता है . बाधाएं अधिक कुशल हैं, और मुहावरेदार भी हैं। लेकिन आपका शिक्षक चाहता है कि आप एक ट्रिगर लिखें, इसलिए यह रहा आपका कोड, ठीक किया गया।
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;
ध्यान देने योग्य बातें:
- बनाएँ या बदलें का अर्थ है कि हम प्रारंभिक DROP विवरण के बिना ट्रिगर कोड बदल सकते हैं।
- कोड के BEGIN और END फ़्रेम ब्लॉक जैसे ट्रिगर बॉडी।
- स्टेटिक कंडीशनल को IF ... END IF कीवर्ड्स के साथ तैयार किया जाता है; लूप कंस्ट्रक्शंस से बाहर निकलने के लिए WHEN है।
- संदर्भ तालिका स्तंभ मान :नए (और :OLD) कीवर्ड के साथ - कोलन नोट करें।
- अपवाद फेंकने के लिए RAISE_APPLICATION_ERROR का उपयोग करें; त्रुटि संख्या -20999 से -20000 की सीमा में होनी चाहिए जो Oracle उपयोगकर्ता-परिभाषित अपवादों के लिए सुरक्षित रखता है।
- अपने त्रुटि संदेश को अर्थपूर्ण बनाएं:अपने उपयोगकर्ताओं को अनुमान लगाने के बजाय उन्हें बताएं कि उन्होंने क्या गलत किया।
- अपने कोड को पढ़ने योग्य बनाने के लिए इंडेंटेशन का उपयोग करना सीखें। आपके भावी सहकर्मी इसके लिए आपको धन्यवाद देंगे।