首页 > 解决方案 > 为什么我可以在 mysql 中使用没有任何 START TRANSACTION 或 COMMIT/ROLLBACK 且 autocommit = 0 的 INSERT?

问题描述

所以我试图更多地了解 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

有任何想法吗?

提前致谢!

标签: mysqldmlautocommit

解决方案


您在当前会话中看到这些行 - 但您不会在另一个会话中看到它们。

看:

在此处输入图像描述

比较时间戳...


推荐阅读