MySQL 5.7.2+ हमें एक टेबल में एक ही इवेंट और एक्शन टाइम के लिए कई ट्रिगर बनाने की अनुमति देता है। घटना होने पर दोनों ट्रिगर क्रमिक रूप से सक्रिय होंगे। इसे एक उदाहरण की मदद से समझा जा सकता है -
उदाहरण
इस उदाहरण में, हम एक ही ईवेंट के लिए कई ट्रिगर बना रहे हैं, जैसे कि BEFORE UPDATE। ट्रिगर्स के नाम 'Studentdetail_before_update' और 'Studentdetail_before_update2' हैं। कोई घटना होने पर वे क्रमिक रूप से सक्रिय होंगे। हम इन ट्रिगर्स को निम्नलिखित डेटा वाले टेबल 'Student_detail' पर बना रहे हैं -
mysql> Student_detail से * चुनें; | स्टूडेंटिड | छात्र का नाम | पता |+-----------+----------------+-----------+| 100 | गौरव | दिल्ली || 101 | रमन | शिमला || 103 | राहुल | जयपुर || 104 | राम | चंडीगढ़ || 105 | मोहन | चंडीगढ़ |+-----------+-------------+-----------+5 पंक्तियाँ सेट में (0.06 सेकंड) mysql> सीमांकक //
अब निम्नलिखित क्वेरी की सहायता से, हम पहला ट्रिगर बनाएंगे, जो पहले की तरह ही क्वेरी द्वारा बनाया जाएगा।
mysql> ट्रिगर स्टूडेंटडेटेल_पहले_अपडेट बनाएं -> अपडेट से पहले -> स्टूडेंट_डिटेल पर -> प्रत्येक पंक्ति के लिए -> BEGIN -> DECLARE AUSER Varchar(40); -> USER () को AUSER में चुनें; -> छात्र_विवरण_अपडेटेड (छात्र, Updated_date, Updated_by) मानों में प्रवेश करें (OLD.studentid, Now (), AUSER); -> अंत; // क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.17 सेकंड) mysql> अपडेट स्टूडेंट_डेटेल सेट पता ='लुधियाना' जहाँ छात्रनाम ='राम'; क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.15 सेकंड) पंक्तियाँ मिलान:1 परिवर्तित:1 चेतावनियाँ:0पूर्व>उपरोक्त ट्रिगर को लागू करने के बाद हमें निम्नलिखित परिणाम प्राप्त हुए -
mysql> student_detail_updated से * चुनें;+---------------+---------------------+----- -----------+| छात्र | Updated_date | Updated_by |+----------+---------------------+--------------- ---+| 104 | 2017-11-22 16:17:16 | रूट@लोकलहोस्ट |+-----------+---------------------+---------- -----+1 पंक्ति सेट में (0.00 सेकंड)अब, उसी घटना का दूसरा ट्रिगर और क्रिया समय निम्नानुसार बनाया जा सकता है -
mysql> ट्रिगर स्टूडेंटडेटेल_पहले_अपडेट2 बनाएं -> अपडेट से पहले -> स्टूडेंट_डिटेल पर -> प्रत्येक पंक्ति के लिए स्टूडेंटडेटेल_पहले_अपडेट -> BEGIN -> DECLARE AUSER Varchar(40); -> USER () को AUSER में चुनें; -> Student_detail_updated (छात्र, Updated_date, Updated_by) मान (OLD.studentid, Now (), AUSER) में डालें; -> अंत; // क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.15 सेकंड)उपरोक्त ट्रिगर पहले ट्रिगर के बाद सक्रिय हो जाएगा क्योंकि हम 'FOLLOWS' कीवर्ड का उपयोग कर रहे हैं।
mysql> Update Student_detail SET पता ='पटियाला' जहां छात्र नाम ='मोहन'; क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.08 सेकंड) पंक्तियों का मिलान किया गया:1 परिवर्तित:1 चेतावनियाँ:0अब, जब हम मान को अपडेट करते हैं, तो निम्न परिणाम सेट एक ही घटना और क्रिया समय के लिए दो पंक्तियों को दिखा रहा है। दूसरी पंक्ति studentdetail_before_update ट्रिगर के बाद के मान का प्रतिनिधित्व करती है और तीसरी पंक्ति studentdetail_before_update2 ट्रिगर के बाद के मान का प्रतिनिधित्व करती है।
mysql> student_detail_updated से * चुनें;+---------------+---------------------+----- -----------+| छात्र | Updated_date | Updated_by |+----------+---------------------+--------------- ---+| 104 | 2017-11-22 16:17:16 | रूट@लोकलहोस्ट || 105 | 2017-11-22 16:19:28 | रूट@लोकलहोस्ट || 105 | 2017-11-22 16:19:28 | रूट@लोकलहोस्ट |+-----------+---------------------+---------- -----+3 पंक्तियाँ सेट में (0.00 सेकंड)