1.关闭MySQL自动提交
关闭自动提交的方法有两种:一种是显示地关闭自动提交,一种是隐式地关闭自动提交。
方法一:显示地关闭自动提交。
使用MySQL命令“set autocommit=0;”,可以显示地关闭MySQL自动提交。
方法二:隐式地关闭自动提交。
使用MySQL命令“start transaction;”可以隐式地关闭自动提交。隐式地关闭自动提交,不会修改系统会话变量@@autocommitte的值。
推荐使用方法二。
2.回滚
关闭MySQL自动提交后,数据库开发人员可以根据需要回滚(也叫撤销)更新操作。
3.提交
MySQL自动提交一旦关闭,数据库开发人员需要“提交”更新语句,才能将更新结果提交到数据库文件中,成为数据库永久的组成部分。自动提交关闭后,MySQL的提交方式分为显示地提交与隐式地提交。
(1)显示地提交:MySQL自动提交关闭后,使用MySQL命令“commit;”可以显示地提交更新语句。
(2)隐式地提交:MySQL自动提交关闭后,使用下面的MySQL语句,可以隐式地提交更新语句。
① begin、set autocommit=1、start transaction、rename table、truncate table等语句;(www.xing528.com)
② 数据定义(create、alter、drop)语句,例如create database、create table、create index、create function、create procedure、alter table、alter function、alter procedure、drop database、drop table、drop function、drop index、drop procedure等语句;
③ 权限管理和账户管理语句:例如grant、revoke、set password、create user、drop user、rename user等语句);锁语句(lock tables、unlock tables)。
使用MySQL命令“start transaction;”可以开启一个事务,该命令开启事务的同时,会隐式地关闭MySQL自动提交。使用commit命令可以提交事务中的更新语句;使用rollback命令可以回滚事务中的更新语句,如图9.19所示。
图9.19 事务提交与回滚原理
4.保存点
保存点(也称为检查点)可以实现事务的“部分”提交或者“部分”撤销。
使用MySQL命令“savepoint 保存点名;”可以在事务中设置一个保存点,使用MySQL命令“rollback to savepoint 保存点名;”可以将事务回滚到保存点状态。原理如图9.20所示。
图9.20 事务回滚到保存点
说明:“rollback to savepoint B”仅仅是让数据库回到事务中的某个“一致性状态B”,而“一致性状态B”仅仅是一个“临时状态”,该“临时状态”并没有将更新回滚,也没有将更新提交。事务回滚必须借助于rollback(而不是“rollback to savepoint B”),事务的提交需借助于commit。
使用MySQL命令“release savepoint 保存点名;”可以删除一个事务的保存点。
如果该保存点不存在,该命令将出现错误信息:ERROR 1305(42000):SAVEPOINT does not exist。如果当前的事务中存在两个相同名字的保存点,旧保存点将被自动丢弃。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。