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

MySQL में किसी इंसर्ट या अपडेट को रोकने के लिए ट्रिगर का उपयोग करें?

<घंटा/>

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 सेकंड)
  1. - ट्रिगर्स के साथ INSERT कमांड पर MySQL टेबल अपडेट करें?

    आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.52 सेकंड) यहाँ दूसरी तालिका बनाने की क्वेरी है - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.51 सेकंड) आइए अब इंसर्ट कमांड पर MySQL टेबल को अपडेट करने के लिए एक ट्रिगर बनाएं - DELIMITER; इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड ड

  1. - सम्मिलित करने से पहले MySQL ट्रिगर कैसे सेट करें?

    इसके लिए सिंटैक्स इस प्रकार है - delimiter // create trigger yourTriggerName before insert on yourTableName    FOR EACH ROW    BEGIN    yourStatement1    .    .    N END // delimiter ; ऊपर दिए गए सिंटैक्स को समझने के लिए, आइए एक टेबल बनाए

  1. - एक MySQL संग्रहीत प्रक्रिया में डिलीमीटर का सही ढंग से उपयोग कैसे करें और मान डालें?

    आइए पहले एक टेबल बनाएं - );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.87 सेकंड) यहाँ एक संग्रहीत कार्यविधि बनाने और मान सम्मिलित करने के लिए क्वेरी है (सही ढंग से सीमांकक का उपयोग करके) - सीमांकक; कॉल कमांड का उपयोग करके संग्रहीत कार्यविधि को कॉल करें - कॉल इन्सर्ट_नाम (क्रिस, ब्राउन); क्वेरी ओके,