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

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

环境:

window10sqlserver2008mysql5.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是行为一致的,其实想来也应该如此。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存