MYSQL-是否启用了自动提交的插入,被认为是单步或多步过程?

问题描述 投票:0回答:1

在MYSQL中,如果在自动提交为ON的情况下执行了条件插入,即

set autocommit true;
insert into blah (x,y,z) values (1,2,3) where not exists (.....);

以上语句是否可以自动执行并同时提交?还是在执行插入与执行提交之间可能会有延迟?

mysql insert atomic
1个回答
0
投票

它的工作方式与不使用自动提交的方式相同,但是您开始一个新的事务,立即执行INSERT,然后立即提交,没有延迟。

START TRANSACTION;
INSERT ...
COMMIT;

这是原子的,在某种意义上,没有其他客户端会看到您的INSERT处于部分完成状态。原子性不关乎速度,而是关乎确保更改已完全提交或根本不提交。其他会话看不到半承诺状态。


顺便说一下,您显示的语法INSERT INTO ... VALUES ... WHERE NOT EXISTS ...没有意义。 INSERT没有WHERE子句。您可能会想到INSERT使用SELECT语句输出的行:

INSERT INTO ...
SELECT ... FROM ... WHERE ...;

如果执行此操作,则不会对VALUES()使用INSERT子句。

© www.soinside.com 2019 - 2024. All rights reserved.