为什么在mysql中,我可以在没有任何START TRANSACTION也没有COMMITROLLBACK的情况下使用INSERT,且autocommit=0?

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

所以我想更多的了解MySQL中的autocommit语句,我有一些不明白的地方,为什么在我使用了 SET autocommit = 0; 并尝试运行 INSERT 毫无 START TRANSACTION 而不 COMMIT/ROLLBACK 最后还是会把它插入到表中?

对于我的理解,如果自动提交等于1,它将自动提交,因此这是有意义的,但我设置我的自动提交为零,因此如果我不使用任何的 START TRANSACTIONCOMMITROLLBACK 块的插入,它不应该工作吧?

我知道有一些DML会自动提交,我也知道DDL语句也会这样做,但在这种情况下 INSERT 似乎不是任何一个DML语句所能做到的。

代码如下。

SET autocommit = 0;
SELECT @@autocommit; --It returns 0

-- No START TRANCATION
INSERT INTO example(first_name, last_name) VALUES ('TEST', 'TSET');
-- No COMMIT nor ROLLBACK

有什么办法吗?

先谢谢你了!

mysql dml autocommit
1个回答
1
投票

你在当前会话中会看到这些行--但在另一个会话中就看不到了。

看。

enter image description here

比较时间戳...

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