gpt4 book ai didi

mysql - SQL插入多行可以在处理时渗透吗

转载 作者:可可西里 更新时间:2023-11-01 07:37:31 25 4
gpt4 key购买 nike

Test.id主键并且自增

当我使用这个 SQL 插入时

 INSERT INTO Test (id,name) values (null, "a") , (null, "b") , (null, "c")

如果有人使用

 INSERT INTO Test (id,name) values (null, "d")

当进程刚刚完成时插入“a”

结果将是(id,name)

(1,a) , (2,b) , (3,c) , (4,d)

(1,a) , (2,d) , (3,b) , (4,c)

或其他

最佳答案

大多数 SQL 引擎不支持 Concurrent Inserts默认。但是,其中一些为您提供了在配置中允许这样做的选项。

就其本身而言,插入是一个 atomic陈述。这意味着数据库将在插入之前被锁定,并且只有在插入完成或失败后才会解锁。

比如我写这些语句,同时执行

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插入多行可以在处理时渗透吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14976443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com