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 सेकंड) यहाँ एक संग्रहीत कार्यविधि बनाने और मान सम्मिलित करने के लिए क्वेरी है (सही ढंग से सीमांकक का उपयोग करके) - सीमांकक; कॉल कमांड का उपयोग करके संग्रहीत कार्यविधि को कॉल करें - कॉल इन्सर्ट_नाम (क्रिस, ब्राउन); क्वेरी ओके,