【发布时间】:2020-09-30 05:41:55
【问题描述】:
所以我试图更多地了解 MySQL 中的 autocommit 语句,但在我使用 SET autocommit = 0; 并尝试在没有任何 START TRANSACTION 且没有 COMMIT/ROLLBACK 的情况下运行 INSERT 之后,我无法理解为什么最后它仍然将它插入到表中?
据我了解,如果 autocommit 等于 1,它将自动提交,因此这是有道理的,但我将我的 autocommit 设置为零,因此如果我不使用任何 START TRANSACTION 和 COMMIT 或 @987654327 @块包围插入它不应该工作对吗?
我知道有一些 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