默认设置下,事务都是自动提交的(auto commit)。
如果需要显示开启一个事务,需要使用命令begin、start transaction或者set autocommit=0
事务控制语句:
1. start transaction | begin
显示开启一个事务
2.commit | commit work
提交事务。两种写法几乎等价。
区别在于commit work控制事务结束后的行为是chain还是release。如果是chain方式,那么事务就是链式事务。
参数completion_type可以控制该行为。默认值0,此时commit和commit work等价。
如果值是1,那么commit work表示马上自动开启一个相同隔离级别的事务。
如果值是2,那么事务结束后,会自动断开与服务器的连接。
3.rollback | rollback work
事务回滚。两种写法几乎等价。
4.savepoint 标识
savepoint允许在事务中创建一个保存点,一个事务中可以有多个savepoint。
4.release savepoint 标识
删除一个事务的保存点
5.rollback to [savepoint] 标识
与savepoint命令一起使用。可以吧事务回滚到标记点,不回滚在标记点之前的任何工作。
6.set transaction
设置事务隔离级别,InnoDB存储引擎提供的隔离级别有:read uncommitted(读取为提交),read committed(读取已提交),repeatable read(可重复读),serializable(序列化)
注意:在存储过程中,只能使用start transaction开启事务。