千家信息网

MySQL 5.5新增SIGNAL异常处理怎么用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍MySQL 5.5新增SIGNAL异常处理怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL 5.5新增SIGNAL异常处理MySQL 从 5.0
千家信息网最后更新 2026年10月31日MySQL 5.5新增SIGNAL异常处理怎么用

这篇文章主要介绍MySQL 5.5新增SIGNAL异常处理怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

MySQL 5.5新增SIGNAL异常处理

MySQL 从 5.0 开始支持存储过程,到现在最新版本5.5 已经好几个年头了。 虽然MYSQL的异常处理不是很完善,但是处理大多数的应用还是足够了。
异常处理的语句有如下几种:
1. DECLARE ... CONDITION.
2. DECLARE ... HANDLER.
3. RESIGNAL.
4. SIGNAL.

第一种,名为条件声明。
DECLARE condition_name CONDITION FOR condition_value

这里condition_name 为标准的变量命名, condition_value 为SQLSTATE 值 或者 MySQL 自身的ERROR CODE.
单独的condition 语句不能直接运行。 只能作为第二种的一部分。
www.2cto.com
第二种, 名为条件处理。
第一种声明好了,接下来自然要做相应的处理。
DECLARE handler_action HANDLER
FOR condition_value [, condition_value] ...
statement

handler_action:
CONTINUE
| EXIT
| UNDO

condition_value:
mysql_error_code
| SQLSTATE [VALUE] sqlstate_value
| condition_name
| SQLWARNING
| NOT FOUND
| SQLEXCEPTION

handler_action 代表处理的动作,目前有效的有两种, 继续和直接退出。
condition_value 有好几种,其中包括前面条件声明里的SQLSTATE, MYSQL EEROR CODE, condition_name 以及范围混淆的其他两种
SQLWARNING,SQLEXCEPTION. NOT FOUND表示任何不存在的WARNING或者ERROR。

第三种, 代表伪装系统的错误信息以及代码,刷新当前警告缓冲区域。
RESIGNAL [condition_value]
[SET signal_information_item
[, signal_information_item] ...]

condition_value:
SQLSTATE [VALUE] sqlstate_value
| condition_name

signal_information_item:
condition_information_item_name = simple_value_specification

condition_information_item_name:
CLASS_ORIGIN
| SUBCLASS_ORIGIN
| MESSAGE_TEXT
| MYSQL_ERRNO
| CONSTRAINT_CATALOG
| CONSTRAINT_SCHEMA
| CONSTRAINT_NAME
| CATALOG_NAME
| SCHEMA_NAME
| TABLE_NAME
| COLUMN_NAME
| CURSOR_NAME

特别注意的是可以伪装的具体东西很多,包括错误代码(MYSQL自身的东东),错误内容,错误的名,表名,列名等等。

第四种,SIGNAL和RESIGNAL差别不大,我们记住signal 不能单独运行,resignal可以单独运行。
SIGNAL condition_value
[SET signal_information_item
[, signal_information_item] ...]

condition_value:
SQLSTATE [VALUE] sqlstate_value
| condition_name

signal_information_item:
condition_information_item_name = simple_value_specification

condition_information_item_name:
CLASS_ORIGIN
| SUBCLASS_ORIGIN
| MESSAGE_TEXT
| MYSQL_ERRNO
| CONSTRAINT_CATALOG
| CONSTRAINT_SCHEMA
| CONSTRAINT_NAME
| CATALOG_NAME
| SCHEMA_NAME
| TABLE_NAME
| COLUMN_NAME
| CURSOR_NAME

我们现在给几个例子。

不用RESIGNAL/SIGNAL。
[sql]
DELIMITER $$

USE `t_girl`$$

DROP PROCEDURE IF EXISTS `sp_signal1`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_signal1`(
IN f_id INT
)
BEGIN
DECLARE con1 TINYINT DEFAULT 0;
DECLARE con1 CONDITION FOR SQLSTATE '23000';
DECLARE CONTINUE HANDLER FOR con1
BEGIN
SELECT 'Error Code : 22\r\nDuplicated!';
END;
INSERT INTO user_info VALUES (f_id);
END$$

DELIMITER ;

CALL sp_signal1(12);

query result

result
Error Code : 22
Duplicated!

用RESIGNAL/SIGNAL 重刷当前错误诊断区域。

[sql]
DELIMITER $$

www.2cto.com
USE `t_girl`$$


DROP PROCEDURE IF EXISTS `sp_signal1`$$


CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_signal1`(
IN f_id INT
)
BEGIN
DECLARE con1 TINYINT DEFAULT 0;
DECLARE con1 CONDITION FOR SQLSTATE '23000';
DECLARE CONTINUE HANDLER FOR con1
BEGIN
resignal SET schema_name = 'action',
table_name = 'action_tb',
message_text = 'Duplicated!',
_errno = 22;
/*
signal con1 SET schema_name = 'action',
table_name = 'action_tb',
message_text = 'Duplicated!',
mysql_errno = 22;
www.2cto.com

*/
END;
INSERT INTO user_info VALUES (f_id);
END$$

DELIMITER ;

CALL sp_signal1(12);
www.2cto.com
Query : call sp_signal1(12)
Error Code : 22
Duplicated!
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000



以上是"MySQL 5.5新增SIGNAL异常处理怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

处理 错误 内容 条件 运行 代码 代表 区域 篇文章 语句 有效 接下来 不大 不用 东西 价值 例子 信息 兴趣 其中包括 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南永感互联网科技有限公司 互联网医疗科技 致聘互联网科技 顺玮阁互联网科技 成都仁贤领冠互联网科技有限公司 成都玖崟互联网科技有限公司乐商圈怎么样 互联网科技有哪些公司 成都铂石互联网科技做什么的 新兴科技互联网创新大赛颁奖典礼 健康食品互联网创新科技园项目 互联网保险科技创业 佛山市拉法互联网科技有限公司 互联网营销推广黑科技 科技和互联网行业的特点 北京品多多互联网科技有限公司 上海旺乐尼互联网科技有限公司 广东猫王互联网科技有限公司电话 网互联网络科技 六子台科技互联网展会 中国主要互联网科技公司 互联网与科技发展 奇酷互联网络科技 成都互联网科技公司 科技类的互联网平台 科技伦理 互联网公司 互联网巨头投资的硬核科技 互联网相关科技技术 互联网领先科技活动 中国互联网公司的科技投入 互联网的科技体现在哪里
0