MySQL事务处理

开始事务

当一个应用程序的第一条SQL语句或者在commitrollback 后的第一条SQL执行后,一个新的事务也就开始了。另外还可以使用一条start transaction 语句来显式地启动一个事务

语法格式:

start transaction | begin work 

begin work 语句可以用来替代start transaction 语句,但是start transaction 更常用些。

结束事务

commit 语句是提交语句,它使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分,也标志一个事务的结束,其语法格式为:

COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

注意:MySQL使用的是平面事务模型,因此嵌套的事务是不允许的。在第一个事务里使用start transaction 命令后,当第二个事务开始时,自动地提交第一个事务。同样,下面的这些MySQL语句运行时都会隐式地执行一个commit 命令:

drop database / drop table
create index / drop index 
alter table / rename table 
lock tables / unlock tables 
set AUTOCOMMIT=1

撤销事务

rollback 语句是撤销语句,它撤销事务所做的修改,并结束当前这个事务。

语法格式:

回滚事务

除了撤销整个事务,用户还可以使用rollback to 语句使事务回滚到某个点,在这之前需要使用savepoint 语句来设置一个保存点。

rollback to savepoint 语句会向已命名的保存点回滚一个事务。如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚中被撤销,语法格式为:

当事务回滚到某个保存点后,在该保存点之后设置的保存点将被删除。

release savepoint 语句会从当前事务的一组保存点中删除已命名的保存点。不出现提交或回滚。如果保存点不存在,会出现错误,语法格式为:

有关事务的处理过程:

Last updated