栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

数据库:mysql和sqlserver中批量执行sql语句 & go关键字作用

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库:mysql和sqlserver中批量执行sql语句 & go关键字作用

环境:

  • window10
  • sqlserver2008
  • mysql5.7

说明:

在编写后端应用程序时,为了提高响应性能,我们会将多条sql语句放在一起执行,如下:

insert into t_user(id,name) values(1,'小明');
insert into t_book(id,name) values(1,'语文');
insert into t_user_book(id,userid,bookid) values(1,1,1);

但是,我们考虑下,如果上面的sql语句出现错误了怎么办,其他的sql语句会受到怎样的影响(非事务内)?

主要考虑以下两个错误:

先准备表: create table test(id int primary key, name varchar(50))

1. 语法错误
示例sql:

insert into test(id,name) values(1,'小孙');
insert into test(id,name) values(2,'小周);

上面语句明显第二行出现了错误,那么第一行能不能成功插入数据呢?

mysql: 不影响第一行,到第二行后报个错,然后终止执行。
sqlserver:默认两行都不会被执行。
看下面效果:


那么有没有办法让sqlserver和mysql表现一致呢,即:第二行语法报错不能影响到前面的语句执行?
答:使用go关键字,如下:

但,其实吧,如果我们拼写的sql语句都有语法错误的话,再执行本身意义不大,当然除非有特殊的场景。

2. sql执行报错
示例sql:

insert into test(id,name) values(3,'小孙');
insert into test(id,name) values(3,'小周');

上面的语句明显第二行住建冲突,那么mysql和sqlserver是怎么处理的呢?



可以看到,在这点上mysql和sqlserver是行为一致的,其实想来也应该如此。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号