mysql – SQL可以在进程中插入多行get infiltrate
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL可以在进程中插入多行get infiltrate,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含924字,纯文字阅读大概需要2分钟。
内容图文
![mysql – SQL可以在进程中插入多行get infiltrate](/upload/InfoBanner/zyjiaocheng/904/d44278ce01834a8ba3e37334eaff4806.jpg)
Test.id是主键和自动增量
而我插入使用此SQL
INSERT INTO Test (id,name) values (null, "a") , (null, "b") , (null, "c")
如果有人使用
INSERT INTO Test (id,name) values (null, "d")
进程刚刚完成插入“a”
将导致(身份证,姓名)
(1,a),(2,b),(3,c),(4,d)
要么
(1,a),(2,d),(3,b),(4,c)
或其他
解决方法:
大多数SQL引擎默认不支持Concurrent Inserts.但是,其中一些允许您在配置中允许该选项.
插件本身就是atomic声明.这意味着DB将在插入之前被锁定,并且只有在插入完成或失败后才会解锁.
例如,如果我编写这些语句并同时执行它们
INSERT INTO Test VALUES(null, 'a'), (null, 'b'), (null, 'c'), (null, 'd')
和
INSERT INTO Test VALUES(null, 'e'), (null, 'f')
基本上发生的是race condition.所以我的输出可以是
1 a, 2 b, 3 c, 4 d, 5 e, 6 f
要么
1 e, 2 f, 3 a, 4 b, 5 c, 6 d
我甚至可以使用INSERT SELECT语句,它将锁定数据库,直到语句完全完成.
INSERT INTO Test select * from test2
因此,在您的情况下,一旦第一个查询开始运行,下一个查询将不得不等待,因此输出将是
(1,a) , (2,b) , (3,c) , (4,d)
内容总结
以上是互联网集市为您收集整理的mysql – SQL可以在进程中插入多行get infiltrate全部内容,希望文章能够帮你解决mysql – SQL可以在进程中插入多行get infiltrate所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。