-
STARTTRANSACTION | BEGIN
:显式地开启
一个事务。 -
COMMIT
:要想使用这个语句的最简形式,只需发出COMMIT。也可以更详细一些,写为COMMIT WORK,不过这二者几乎是等价的。COMMIT会提交事务,并使得已对数据库做的所有修改成为永久性的。 -
ROLLBACK
:要想使用这个语句的最简形式,只需发出ROLLBACK。同样地,也可以写为ROLLBACK WORK,但是二者几乎是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。 -
SAVEPOINT identifier
∶SAVEPOINT允许在事务中创建
一个保存点
,一个事务中可以有多个SAVEPOINT。 -
RELEASE SAVEPOINT identifier
:删除
一个事务的保存点
,当没有一个保存点执行这句语句时,会抛出一个异常。 -
ROLLBACK TO [SAVEPOINT] identifier
:这个语句与SAVEPOINT命令一起使用。可以把事务回滚
到标记点
,而不回滚在此标记点之前的任何工作。
例如:可以发出两条UPDATE语句,后面跟一个SAVEPOINT,然后又是两条DELETE语句。如果执行DELETE语句期间出现了某种异常情况,并且捕获到这个异常,同时发出了ROLLBACK TO SAVEPOINT命令,事务就会回滚到指定的SAVEPOINT,撤销DELETE完成的所有工作,而UPDATE语句完成的工作不受影响。
-
SET TRANSACTION
:这个语句用来设置
事务的隔离级别
。InnoDB存储引擎提供的事务隔离级别有:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。
差异
START TRANSACTION 和 BEGIN
START TRANSACTION、BEGIN语句都可以在MySQL命令行下显式地开启一个事务。但是在存储过程中,MySQL数据库的分析器会自动将BEGIN识别为BEGIN…END,因此在存储过程
中只能使用
START TRANSACTION语句来开启一个事务。
COMMIT 和 COMMIT WORK
COMMIT和COMMIT WORK语句基本是一致的,都是用来提交事务。不同之处在于COMMIT WORK用来控制事务结束后的行为是CHAIN还是RELEASE的。如果是CHAIN方式,那么事务就变成了链事务
。
用户可以通过参数completion_type来进行控制,该参数默认为0,表示没有任何操作。在这种设置下COMMIT和COMMIT WORK是完全等价的。当参数completion_type的值为1时,COMMIT WORK等同于COMMIT AND CHAIN,表示马上自动开启一个相同隔离级别的事务。
网友评论