MySQL-এ SIGNAL স্টেটমেন্ট একটি ত্রুটি হ্যান্ডলিং মেকানিজম যা অপ্রত্যাশিত ঘটনা হ্যান্ডেল করে এবং প্রয়োজনে অ্যাপ্লিকেশন থেকে গ্রেসফুল এক্সিট নিশ্চিত করে। এটি হ্যান্ডলারের কাছে ত্রুটির তথ্য পাস করে।
সিনট্যাক্স
SIGNAL SQLSTATE | condition_value
[SET signal_information_item = value_1
[, signal_information_item = value_2, ...]];
- SQLSTATE মান বা
DECLARE CONDITIONদিয়ে ঘোষিত একটি কন্ডিশন নাম হতে পারে। - SIGNAL স্টেটমেন্টে সর্বদা একটি SQLSTATE মান বা SQLSTATE মানসহ একটি নামকৃত কন্ডিশন নির্দিষ্ট করতে হয়।
- SQLSTATE মান পাঁচ অক্ষরের অ্যালফানিউমেরিক কোড। নিজের কোড
'00'দিয়ে শুরু করা যাবে না কারণ এগুলো সাকসেস ইঙ্গিত করে এবং ত্রুটি সিগন্যালিংয়ের জন্য বৈধ নয়। - ক্যাচ-অল ত্রুটি হ্যান্ডলিংয়ের জন্য
'45000'SQLSTATE মান ব্যবহার করুন, যা "unhandled user-defined exception" বোঝায়।
উদাহরণ: BEFORE INSERT ট্রিগারে SIGNAL ব্যবহার
student_age টেবিলে একটি BEFORE INSERT ট্রিগার তৈরি করছি যা বয়স ০ এর কম হলে 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
ফলাফল থেকে স্পষ্ট: বয়স ০ এর কম ইনসার্ট করার চেষ্টা করলে SIGNAL স্টেটমেন্ট ব্যবহার করে ত্রুটি ফেলা হয়েছে।