Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sử dụng câu lệnh SIGNAL trong MySQL trigger

Câu lệnh SIGNAL trong MySQL là cơ chế xử lý lỗi cho các tình huống bất ngờ và thoát graceful khỏi ứng dụng nếu cần. Nó cung cấp thông tin lỗi cho handler. Cú pháp cơ bản:

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

Tại đây, SIGNAL là giá trị SQLSTATE hoặc tên điều kiện được khai báo bằng DECLARE CONDITION. Câu lệnh SIGNAL phải luôn chỉ định giá trị SQLSTATE hoặc điều kiện có định nghĩa SQLSTATE. Giá trị SQLSTATE gồm 5 ký tự alphanumeric. Không được bắt đầu mã SQLSTATE riêng bằng '00' vì các giá trị này chỉ thị thành công và không hợp lệ để báo lỗi. Nếu giá trị không hợp lệ, sẽ xảy ra lỗi Bad SQLSTATE. Để bắt lỗi chung, nên dùng SQLSTATE '45000' (unhandled user-defined exception).

Ví dụ

Tạo trigger BEFORE INSERT trên bảng student_age, ném lỗi nếu tuổi < 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

Kết quả cho thấy: chèn tuổi âm sẽ kích hoạt SIGNAL ném lỗi.