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

Handler dùng SQLSTATE thoát thực thi khi lỗi trùng khóa chính MySQL

Ví dụ handler dùng SQLSTATE (mã lỗi 1062 - duplicate key) kiểu EXIT:

mysql> DELIMITER //
mysql> CREATE PROCEDURE Insert_Studentdetails4(
    S_Studentid INT, S_StudentName VARCHAR(20), S_Address VARCHAR(20), OUT got_error INT)
    -> BEGIN
    -> DECLARE EXIT HANDLER FOR 1062 SET got_error=1;
    -> INSERT INTO Student_detail (Studentid, StudentName, Address)
    -> VALUES(S_Studentid, S_StudentName, S_Address);
    -> SELECT * FROM Student_detail;
    -> END //
Query OK, 0 rows affected (0.00 sec)

Thử chèn khóa trùng (id=104):

mysql> DELIMITER ;
mysql> CALL Insert_Studentdetails4(104,'Ram','Chandigarh',@got_error);
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @got_error;
+------------+
| @got_error |
+------------+
| 1          |
+------------+

Thực thi kết thúc ngay (không chạy SELECT *), báo lỗi 1062 mặc định, gán got_error=1.