手动提交事务
START TRANSACTION; // BEGIN TRANSACTION;
// ......
COMMIT; // 提交事务
ROLLBACK; // 回滚事务回滚点
- 设置回滚点
SAVEPOINT 名字 - 回到回滚点
ROLLBACK TO 名字 RELEASE SAVEPOINT明确地释放保留点。
START TRANSACTION语句相较于BEGIN特别之处在于,后边能跟随几个修饰符:
①READ ONLY:标识当前事务是一个只读事务,也就是属于该事务的数据库操作只能读取数据,而不能修改数据。
②READ WRITE:标识当前事务是一个读写事务,也就是属于该事务的数据库操作既可以读取数据,也可以修改数据。
③WITH CONSISTENT SNAPSHOT:立刻启动一致性读。使用START TRANSACTION语句后,并非立刻开启事务,而是在第一条语句执行前再开启。但是可以配置该修饰符立刻开启事务,分配一个事务 ID。
自动提交事务
- MySQL 默认为每一条 DML(增删改) 语句自动开启一个事务、自动提交事务。
SELECT @@autocommit;其中,@@表示全局变量,1 表示开启,0 表示关闭。SET @@autocommit = 0;关闭自动提交事务,之后必须commit;才会提交任务并更新数据库。
隐式提交事务
- 当一个事务还没有
commit或者rollback,又开启新事务时,则隐式提交上一个事务。 - 当
autocommit为0,手动将其更改为1时,隐式提交上一个事务。 - 使用
LOCK TABLES、UNLOCK TABLES等关于锁定的语句也会隐式的提交上一个事务。