mysql 执行sql error 2_mysql中两条sql语句一起执行,第一条出错,第二条能执行吗?...

本文介绍如何在MySQL中通过存储过程及CONTINUE HANDLER处理特定错误代码(如1406),使得即使遇到错误也能继续执行后续SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

群里有同学问到这个问题。

理论上 第一条出错,第二条会停止。

譬如我们建一张表users ,表里就一个字段 ,username, varchar型,长度5 。

(具体建表自己建,我特么特别讨厌网上某些文章,写个技术分享,解决方案就2-3行,建表语句倒占了100行)

开始写两个sql语句 (注意分号)

insert into users(username) values(‘23232fwefwegwegwegwegwegwegweg’);  //这个货肯定出错,长度超过了

insert into users(username) values(‘333’);

以上语句 可以放到navicat等查询分析器器里去执行。 第一条就会报错。

[Err] 1406 – Data too long for column ‘username’ at row 1

注意错误代码是:1406

mysql error code 有很多 譬如

1006:创建数据库失败

1007:数据库已存在,创建数据库失败

1008:数据库不存在,删除数据库失败

1009:不能删除数据库文件导致删除数据库失败

1406 就代表数据过长,更多的请自行百度

那么如果我就是想让第一句出错,第二句照样执行呢?

答案是可以的

1、写个存储过程

2、定义一个CONTINUE HANDLER

核心部分代码如下:

DECLARE aa int DEFAULT 0;  #随便定义一变量

DECLARE CONTINUE HANDLER for  1406 set aa=1 ;  #代表发生1406这个error code 后照样执行 下一句

insert into users(username) values(‘23232fwefwegwegwegwegwegwegweg’);

insert into users(username) values(‘333’);

这样,去执行这个存储过程。就会在第一行出错后,照样执行下一条。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值