MySQL输入一行带分号的语句后换行是不是就等于commit
今天学习MySQL遇到一个问题,就是使用INSERT、UPDATE、DELETE语句后无法ROLLBACK,也就是说明在这些语句输入之后已经COMMIT了,于是有了如题所示的问题。因为书上说COMMIT之后才会真正把事物所做的修改保存到数据库,否则修改只是先存在了临时回退区域。那为什么实践结果和书上的有出入呢?经过查找发现:
MySQL默认操作模式就是autocommit自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置autocommit的值改变是否是自动提交autocommit模式。
通过以下命令可以查看当前autocommit模式,从查询结果中,我们发现Value的值是ON,表示autocommit开启。我们可以通过以下SQL语句改变这个模式,如下图所示。
这样修改时候就可以正常地ROLLBACK了。
但设置成autocommit还是有好处的,防止自己忘记COMMIT而没有将修改保存到数据库。