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

การใช้คำสั่ง SIGNAL ร่วมกับ MySQL Trigger

คำสั่ง SIGNAL ใน MySQL Trigger

คำสั่ง SIGNAL เป็นกลไกจัดการข้อผิดพลาดสำหรับการจัดการสถานการณ์ที่ไม่คาดคิด และการออกจากโปรแกรมอย่างเหมาะสม SIGNAL ให้ข้อมูลข้อผิดพลาดแก่ Handler

ไวยากรณ์พื้นฐาน

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

รายละเอียด:

  • SIGNAL ต้องระบุค่า SQLSTATE หรือชื่อเงื่อนไขที่ประกาศด้วย DECLARE CONDITION
  • ค่า SQLSTATE ประกอบด้วยรหัส 5 ตัวอักษร英数字
  • ห้ามเริ่ม SQLSTATE ด้วย '00' เพราะแสดงความสำเร็จ ไม่ใช่ข้อผิดพลาด
  • สำหรับการจัดการข้อผิดพลาดทั่วไป ใช้ SQLSTATE '45000' ซึ่งหมายถึง "unhandled user-defined exception"

ตัวอย่าง: ตรวจสอบอายุไม่ติดลบ

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

ผลลัพธ์แสดงว่าเมื่อพยายามแทรกอายุติดลบ Trigger จะโยนข้อผิดพลาดผ่าน SIGNAL