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

Why can I use INSERT without any START TRANSACTION nor COMMIT/ROLLBACK with autocommit = 0 in mysql?

所以我想更多地了解 MySQL 中的自动提交语句,但在我使用 SET autocommit = 0; 并尝试 运行 和 INSERT 没有任何 START TRANSACTION 也没有 COMMIT/ROLLBACK 最后它仍然将它插入 table?

据我所知,如果自动提交等于 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

有什么想法吗?

提前致谢!

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

看:

比较时间戳...