नया ट्रिगर बनाने के लिए, हमें CREATE TRIGGER स्टेटमेंट का उपयोग करना होगा। इसका सिंटैक्स इस प्रकार है -
ट्रिगर बनाएं ट्रिगर_नाम ट्रिगर_टाइम ट्रिगर_इवेंटॉन टेबल_नामप्रत्येक पंक्ति के लिए...END;
यहाँ,
- Trigger_name ट्रिगर का नाम है जिसे CREATE TRIGGER स्टेटमेंट के बाद रखा जाना चाहिए। ट्रिगर_नाम के लिए नामकरण परंपरा [ट्रिगर टाइम] _ [टेबल नेम] _ [ट्रिगर इवेंट] की तरह हो सकती है। उदाहरण के लिए, पहले_student_update या after_student_insert ट्रिगर का नाम हो सकता है।
- Trigger_time ट्रिगर सक्रियण का समय है और यह पहले या बाद में हो सकता है। ट्रिगर को परिभाषित करते समय हमें सक्रियण समय निर्दिष्ट करना होगा। यदि हम तालिका में किए गए परिवर्तन से पहले कार्रवाई को संसाधित करना चाहते हैं और तालिका में किए गए परिवर्तन के लिए कार्रवाई पोस्ट को संसाधित करना चाहते हैं तो हमें पहले का उपयोग करना चाहिए।
- Trigger_event INSERT, UPDATE, या DELETE हो सकता है। यह घटना ट्रिगर को लागू करने का कारण बनती है। एक ट्रिगर केवल एक घटना द्वारा लागू किया जा सकता है। एक ट्रिगर को परिभाषित करने के लिए जिसे कई ईवेंट द्वारा लागू किया जाता है, हमें कई ट्रिगर्स को परिभाषित करना होगा, प्रत्येक ईवेंट के लिए एक।
- Table_name तालिका का नाम है। दरअसल, एक ट्रिगर हमेशा एक विशिष्ट तालिका से जुड़ा होता है। तालिका के बिना, ट्रिगर मौजूद नहीं होगा इसलिए हमें 'चालू' कीवर्ड के बाद तालिका का नाम निर्दिष्ट करना होगा।
- BEGIN…END वह ब्लॉक है जिसमें हम ट्रिगर के तर्क को परिभाषित करेंगे।
उदाहरण
मान लीजिए कि हम छात्र_आयु तालिका पर ट्रिगर लागू करना चाहते हैं जो इस प्रकार बनाई गई है -
mysql> तालिका बनाएं Student_age(आयु INT, नाम Varchar(35));क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.80 सेकंड)
अब, यदि कोई उम्र <0 डालने का प्रयास करता है, तो निम्न ट्रिगर स्वचालित रूप से आयु =0 सम्मिलित करेगा।
mysql> DELIMITER //mysql> प्रत्येक ROWBEGINIF NEW.age के लिए student_age पर डालने से पहले_inser_studentage से पहले ट्रिगर बनाएं <0 फिर SET NEW.age =0;END IF;END // क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.30 सेकंड)पूर्व>अब, इस ट्रिगर को लागू करने के लिए, हम निम्नलिखित कथनों का उपयोग कर सकते हैं -
mysql> छात्र_आयु (आयु, नाम) मान (30, 'राहुल') में डालें; क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.14 सेकंड) mysql> छात्र_आयु (आयु, नाम) मानों में डालें (-10, 'हर्षित') );क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.11 सेकंड)mysql> Student_age से * चुनें;+----------+-----------+| उम्र | नाम |+----------+---------+| 30 | राहुल || 0 | हर्षित |+----------+--------+2 पंक्तियों में सेट (0.00 सेकंड)उपरोक्त परिणाम सेट दर्शाता है कि तालिका में ऋणात्मक मान डालने पर ट्रिगर द्वारा 0 सम्मिलित किया जाएगा।
उपरोक्त एक ट्रिगर का उदाहरण था जिसमें ट्रिगर_इवेंट के साथ INSERT और ट्रिगर_टाइम पहले हैं।