MySQL में किसी इंसर्ट या अपडेट को रोकने के लिए आपको SIGNAL SQL STATE कमांड का उपयोग करना होगा। ट्रिगर सिंटैक्स इस प्रकार है:
DELIMITER//प्रत्येक ROWBEGINआपकी स्थिति के लिए अपनेTableName पर सम्मिलित करने से पहले अपना TriggerName ट्रिगर बनाएं SQLSTATE '45000'SET MESSAGE_TEXT ='anyMessageToEndUser';END //DELIMITER;
अब, एक ट्रिगर बनाएं जो किसी शर्त पर तालिका में रिकॉर्ड डालने से रोकेगा। ट्रिगर बनाने की क्वेरी इस प्रकार है:
mysql> DELIMITER//mysql> इन्सर्ट_प्रिवेंट पर डालने से पहले TRIGGER InsertPreventTrigger बनाएं -> प्रत्येक पंक्ति के लिए -> BEGIN -> IF(new.Id <1 या new.Id> 5) फिर -> SIGNAL SQLSTATE '45000' -> MESSAGE_TEXT सेट करें ='आप रिकॉर्ड सम्मिलित नहीं कर सकते'; -> अंत अगर; -> END // क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.20 सेकंड)mysql> DELIMITER;
जब भी आप 0 से कम या 5 से अधिक रिकॉर्ड डालते हैं तो उपरोक्त ट्रिगर सम्मिलित होना बंद हो जाएगा।
आइए अब पहले एक टेबल बनाएं। तालिका बनाने की क्वेरी इस प्रकार है:
mysql> तालिका बनाएँ Insert_Prevent -> ( -> Id int -> );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.62 सेकंड)
अब 0 से कम या 5 से अधिक रिकॉर्ड डालें। यह एक त्रुटि संदेश में परिणाम देगा क्योंकि जब भी आप 0 से कम या 5 से अधिक रिकॉर्ड डालते हैं तो ट्रिगर को रोकने के लिए ट्रिगर बनाया जाता है। त्रुटि संदेश इस प्रकार है:
mysql> इन्सर्ट_प्रिवेंट वैल्यू (0);ERROR 1644 (45000) में इंसर्ट करें:आप Recordmysql> इंसर्ट_Prevent वैल्यूज में इंसर्ट नहीं कर सकते (6);ERROR 1644 (45000):आप रिकॉर्ड नहीं डाल सकते हैं
यदि आप 1 और 5 के बीच रिकॉर्ड डालते हैं, तो कोई त्रुटि नहीं होगी। यह रिकॉर्ड्स को सम्मिलित करने से नहीं रोकता है क्योंकि जैसा कि ऊपर चर्चा की गई है, हमारे ट्रिगर को 1 और 5 के बीच रिकॉर्ड डालने के लिए बनाया गया है। रिकॉर्ड डालने की क्वेरी इस प्रकार है:
mysql> Insert_Prevent मानों में सम्मिलित करें (1); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.20 सेकंड) mysql> Insert_Prevent मानों में सम्मिलित करें (5); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.17 सेकंड) mysql> Insert_Prevent मानों में डालें ( 2);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.11 सेकंड)mysql> Insert_Prevent मानों में डालें (3); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.23 सेकंड)
चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें। क्वेरी इस प्रकार है:
mysql> *Insert_Prevent से चुनें;
निम्न आउटपुट है:
<पूर्व>+----------+| आईडी |+------+| 1 || 5 || 2 || 3 |+------+4 पंक्तियाँ सेट में (0.00 सेकंड)