Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

हम एक ही ट्रिगर इवेंट और एक्शन टाइम के लिए एकाधिक MySQL ट्रिगर्स कैसे बना सकते हैं?


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 सेकंड)

  1. मैं एक ही कॉलम को बदलते समय एक MySQL बूलियन कॉलम कैसे बना सकता हूं और मान 1 असाइन कर सकता हूं?

    परिवर्तन करते समय मान 1 निर्दिष्ट करने के लिए, MySQL DEFAULT का उपयोग करें। यदि INSERT कमांड का उपयोग करते समय एक ही कॉलम में कुछ भी नहीं डाला जाता है तो यह 1 दर्ज करेगा। आइए पहले एक टेबल बनाएं - mysql> create table DemoTable (    isAdult int ); Query OK, 0 rows affected (1.39 sec) नि

  1. MySQL में एक ही समय में एकाधिक डेटा इनपुट?

    निम्नलिखित वाक्य रचना है - अपनेTableName मानों में डालें(yourValue1,yourValue2,.....N),(yourValue1,yourValue2,.....N),(yourValue1,yourValue2,.....N),(yourValue1,yourValue2 ,.....एन),...एन आइए एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (1.91 सेकंड) इंसर्ट कमांड की मदद से टेबल में कुछ रिकॉ

  1. टिंकर में एक ही समय में एकाधिक कैनवास कैसे दिखाएं?

    कैनवास विजेट टिंकर में बहुमुखी विजेट्स में से एक है जिसका उपयोग किसी एप्लिकेशन में चित्र बनाने, आकृतियाँ, आर्क, चित्र और अन्य जटिल लेआउट बनाने के लिए किया जाता है। कैनवास विजेट बनाने के लिए, आपको कैनवास(रूट, **विकल्प) का एक कंस्ट्रक्टर बनाना होगा । आप फ़ैक्टरी फ़ंक्शंस का उपयोग टेक्स्ट, इमेज, आर्क