Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะใช้คำสั่ง SIGNAL กับทริกเกอร์ MySQL ได้อย่างไร


อันที่จริง คำสั่ง 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 เสมอ ค่า SQLSTATE สำหรับคำสั่ง The SIGNAL ประกอบด้วยรหัสตัวอักษรและตัวเลขห้าตัว เราต้องไม่เริ่มโค้ด SQLSTATE ของเราเองด้วย '00' เนื่องจากค่าดังกล่าวบ่งชี้ความสำเร็จ และไม่ถูกต้องสำหรับการส่งสัญญาณข้อผิดพลาด หากค่าของเราไม่ถูกต้อง จะเกิดข้อผิดพลาด Bad SQLSTATE สำหรับการจัดการข้อผิดพลาดที่รับทั้งหมด เราควรกำหนดค่า SQLSTATE เป็น '45000' ซึ่งหมายถึง “ข้อยกเว้นที่ผู้ใช้กำหนดเองที่ไม่สามารถจัดการได้”

เพื่อแสดงการใช้คำสั่ง SIGNAL กับทริกเกอร์ MySQL เรากำลังใช้ตัวอย่างต่อไปนี้ซึ่งเรากำลังสร้าง BEFORE INSERT ทริกเกอร์บนโต๊ะ student_age มันจะโยนข้อความแสดงข้อผิดพลาดโดยใช้คำสั่ง SIGNAL หากเราจะพยายามป้อนอายุน้อยกว่า 0

ตัวอย่าง

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