【问题标题】:Why can I use INSERT without any START TRANSACTION nor COMMIT/ROLLBACK with autocommit = 0 in mysql?为什么我可以在 mysql 中使用没有任何 START TRANSACTION 或 COMMIT/ROLLBACK 且 autocommit = 0 的 INSERT?
【发布时间】:2020-09-30 05:41:55
【问题描述】:

所以我试图更多地了解 MySQL 中的 autocommit 语句,但在我使用 SET autocommit = 0; 并尝试在没有任何 START TRANSACTION 且没有 COMMIT/ROLLBACK 的情况下运行 INSERT 之后,我无法理解为什么最后它仍然将它插入到表中?

据我了解,如果 autocommit 等于 1,它将自动提交,因此这是有道理的,但我将我的 autocommit 设置为零,因此如果我不使用任何 START TRANSACTIONCOMMIT 或 @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


    【解决方案1】:

    您在当前会话中看到这些行 - 但您不会在其他会话中看到它们。

    看:

    比较时间戳...

    【讨论】:

    • 谢谢!你是 100% 正确的。我选择你的答案作为正确的答案!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 2015-10-15
    • 2013-01-23
    • 2016-10-05
    • 1970-01-01
    • 2010-12-21
    • 2011-12-17
    • 2015-06-19
    相关资源
    最近更新 更多