为什么我可以在mysql中使用INSERT而不使用任何启动事务,或者使用autocommit=0的COMMIT/ROLLBACK?

为什么我可以在mysql中使用INSERT而不使用任何启动事务,或者使用autocommit=0的COMMIT/ROLLBACK?,mysql,dml,autocommit,Mysql,Dml,Autocommit,因此,我试图更多地了解MySQL中的autocommit语句,在使用SET autocommit=0之后,我很难理解为什么会这样;并尝试在没有任何开始事务和结束时没有提交/回滚的情况下运行INSERT它是否仍将其插入表中 据我所知,如果autocommit等于1,它将自动提交,因此这是有意义的,但我将autocommit设置为零,因此如果我在插入时不使用任何包含提交或回滚块的启动事务,它应该不会正常工作 我知道有些DML会自动提交,我也知道DDL语句也会这样做,但在本例中,INSERT似乎不是任

因此,我试图更多地了解MySQL中的autocommit语句,在使用SET autocommit=0之后,我很难理解为什么会这样;并尝试在没有任何开始事务和结束时没有提交/回滚的情况下运行INSERT它是否仍将其插入表中

据我所知,如果autocommit等于1,它将自动提交,因此这是有意义的,但我将autocommit设置为零,因此如果我在插入时不使用任何包含提交或回滚块的启动事务,它应该不会正常工作

我知道有些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
有什么想法吗


提前谢谢

在当前会话中可以看到这些行,但在其他会话中看不到它们

看:


比较时间戳…

谢谢!你是100%正确的。我选择你的答案作为正确答案!再次感谢!