दरअसल, 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' से शुरू नहीं करना चाहिए क्योंकि ऐसे मान सफलता को इंगित करते हैं और त्रुटि संकेत के लिए मान्य नहीं हैं। यदि हमारा मान अमान्य है, तो एक Bad SQLSTATE त्रुटि होती है। कैच-ऑल त्रुटि संभाल के लिए, हमें '45000' का SQLSTATE मान निर्दिष्ट करना चाहिए, जो "unhandled user-defined exception" को दर्शाता है।
MySQL ट्रिगर के साथ SIGNAL स्टेटमेंट के उपयोग को समझाने के लिए हम निम्न उदाहरण का उपयोग कर रहे हैं जिसमें हम student_age तालिका पर एक BEFORE INSERT ट्रिगर बना रहे हैं। यदि हम 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 स्टेटमेंट का उपयोग करके त्रुटि देगा।