事务的提交模式
自动提交模式:每一个
DML
语句都是一个单独的事务,如果需要将一套
DML
操作作为一
个事务,必须使用
begin [DMLs] end
来表示中间的所有的
DML
作为一个事务。
BEGIN;
在使用的时候有个小技巧,在使用
BEGIN;
开启新事务时会对前面的事务进行隐式提
交,因此也可以用
BEGIN;
来提交事务,只是其副作用是会开启新的事务。当然,如果想要
不保存当前事务所做的更改,使用
手动提交模式:开启事务后,只有
commit
才会将以上所有的
DML
语句提交执行操作。
在这种模式下,若不使用
COMMIT;
或其他具有隐式提交属性的语句
(
例如上述
BEGIN;)
就不
会提交
DML
语句对数据的改变,提交之前允许使用
ROLLBACK;
对事务进行回滚。由于
BEGIN;
带有隐式提交属性,因此在这种模式下
BEGIN;
和
COMMIT;
是等价的。
因为
MySQL
时默认自动提交事务的(例如
insert
语句执行后数据已经被写入数据库文件),
但是更多的时候需要手动提交,所以需要关闭自动提交功能:
评论