首页 » 我的课程 » 数据库 » 正文

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

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

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

  譬如我们建一张表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’);

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

发表评论