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

हम MySQL ट्रिगर्स के साथ SIGNAL स्टेटमेंट का उपयोग कैसे कर सकते हैं?


असल में, MySQL SIGNAL स्टेटमेंट अप्रत्याशित घटनाओं से निपटने के लिए एक त्रुटि प्रबंधन तंत्र है और यदि आवश्यक हो तो एप्लिकेशन से एक सुंदर निकास है। मूल रूप से, यह हैंडलर को त्रुटि जानकारी प्रदान करता है। इसका मूल सिंटैक्स इस प्रकार होगा -

SIGNAL SQLSTATE | condition_value
[SET signal_information_item = value_1,[, signal_information_item] = value_2,
etc;]

यहाँ, SIGNAL कीवर्ड एक SQLSTATE मान या DECLARE CONDITION स्टेटमेंट द्वारा घोषित एक शर्त नाम है। SIGNAL स्टेटमेंट को हमेशा एक SQLSTATE मान या एक नामित शर्त निर्दिष्ट करनी चाहिए जो SQLSTATE मान के साथ परिभाषित हो। SIGNAL स्टेटमेंट के लिए SQLSTATE मान में पांच-वर्ण अल्फ़ान्यूमेरिक कोड होता है। हमें अपना स्वयं का SQLSTATE कोड '00' से शुरू नहीं करना चाहिए क्योंकि ऐसे मान सफलता का संकेत देते हैं और किसी त्रुटि के संकेत के लिए मान्य नहीं हैं। यदि हमारा मान अमान्य है, तो एक खराब SQLSTATE त्रुटि उत्पन्न होती है। कैच-ऑल एरर हैंडलिंग के लिए, हमें '45000' का SQLSTATE मान असाइन करना चाहिए, जो एक "अनहेल्ड यूज़र-डिफ़ाइंड अपवाद" को दर्शाता है।

MySQL ट्रिगर्स के साथ SIGNAL स्टेटमेंट के उपयोग को स्पष्ट करने के लिए हम निम्नलिखित उदाहरण का उपयोग कर रहे हैं जिसमें हम इन्सर्ट से पहले बना रहे हैं। छात्र_आयु तालिका पर ट्रिगर। यदि हम 0 से कम आयु में प्रवेश करने का प्रयास करेंगे तो यह SIGNAL स्टेटमेंट का उपयोग करके एक त्रुटि संदेश देगा।

उदाहरण

mysql> Create trigger before_insert_studentage BEFORE INSERT on
student_age FOR EACH ROW BEGIN IF NEW.age<0 then SIGNAL SQLSTATE
'45000' SET MESSAGE_TEXT = 'age less than 0'; END if; END; //
Query OK, 0 rows affected (0.12 sec)

mysql> Insert into student_age(age, name) values(-10,'gaurav')//
ERROR 1644 (45000): age less than 0

उपरोक्त परिणाम सेट से यह स्पष्ट है कि यदि हम 0 से कम आयु डालने का प्रयास करेंगे तो यह SIGNAL स्टेटमेंट का उपयोग करके एक त्रुटि देगा।


  1. क्या मैं MySQL में IF () के साथ SUM () का उपयोग कर सकता हूं?

    हां, आप MySQL में IF() के साथ SUM() का उपयोग कर सकते हैं। आइए पहले एक डेमो टेबल बनाएं: टेबल बनाएं DemoTable(Value int, Value2 int);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.51 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालने के लिए क्वेरी निम्नलिखित है: डेमोटेबल मानों में डालें ( 400,100);क

  1. MySQL में रोलअप के साथ सही तरीके से कैसे उपयोग करें?

    रोलअप के साथ उपयोग करने के लिए सिंटैक्स इस प्रकार है - रोलअप के साथ अपने ColumnName1 द्वारा अपनेTableName समूह से अपना ColumnName1,sum(yourColumnName2) चुनें; आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.44 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTabl

  1. MySQL में CURDATE के साथ CONTAINS () का उपयोग कैसे करें?

    इसके लिए आप CURDATE() के साथ CONCAT() का इस्तेमाल कर सकते हैं। MySQL में CONTAINS() नाम का कोई फंक्शन नहीं है। आइए पहले वर्तमान तिथि प्राप्त करें। वर्तमान तिथि इस प्रकार है - curdate() चुनें; यह निम्नलिखित आउटपुट देगा - +---------------+| दही () |+---------------+| 2019-11-28 |+---------------+1