असल में, 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 स्टेटमेंट का उपयोग करके एक त्रुटि देगा।