MySQL十八:异常处理
作者:互联网
异常处理
一、定义条件
-
定义
事先定义程序执行过程中可能遇到的问题,给MySQL中的错误码命名
-
错误码
数值型错误码:MySQL_error_code
字符串型错误码:sqlstate_value
-
语法格式
DECLARE 自定义错误名称 CONDITION FOR 错误码(错误条件); # 举例 DECLARE Field_Not_Be_NULL CONDITION FOR 1048; DECLARE Field_Not_Be_NULL CONDITION FOR SQLSTATE '23000';
二、处理程序
-
定义
定义在遇到问题时应当采取的处理方式,并保证存储过程或函数在遇到警告或错误时能继续执行,避免程序异常停止运行。
-
语法格式
DECLARE 处理方式 HANDLER FOR 错误类型 处理语句;
-
处理方式
① CONTINUE:遇到错误不处理,继续执行
② EXIT:遇到错误后退出
③ UNDO:遇到错误撤回之前操作,MySQL不支持
-
错误类型
① SQLSTATE:字符串型错误代码
② MySQL_error_code:数值型错误代码
③ 错误名称:定义条件中自定义的名称
④ SQLWARNING:以01开头的SQLSTATE
⑤ NOT FOUND:以02开头的SQLSTATE
⑥ SQLEXCEPTION:除了④、⑤之外的SQLSTATE
补充:① = ④ + ⑤ + ⑥
-
处理语句
可以是简单的语句,也可是BEGIN…END复合语句
-
操作
CREATE TABLE dep AS SELECT * FROM atguigudb.departments; ALTER TABLE dep ADD CONSTRAINT uk_dept_name UNIQUE(department_id); DELIMITER // CREATE PROCEDURE InsertDataWithCondition() BEGIN DECLARE duplicate_entry CONDITION FOR SQLSTATE '23000'; DECLARE EXIT HANDLER FOR duplicate_entry SET @proc_value = -1; SET @x = 1; INSERT INTO dep(department_name) VALUES ('测试'); SET @x = 2; INSERT INTO dep(department_name) VALUES ('测试'); SET @x = 3; END // DELIMITER ; CALL InsertDataWithCondition();
标签:错误,十八,错误码,SQLSTATE,MySQL,异常,DECLARE,CONDITION 来源: https://blog.csdn.net/N_ZSX/article/details/122529184