MySQL十八:异常处理
2022/1/17 2:04:08
本文主要是介绍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();
这篇关于MySQL十八:异常处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南