事务处理
- 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行
- 事务(transaction)指一组SQL语句
- 回退(rollback)指撤销指定SQL语句的过程
- 提交(commit)指将未存储的SQL语句结果写入数据库表
- 保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退
控制事务处理
-
使用语句start transaction标识事务的开始
-
使用rollback:
select * from ordertotals;
start transaction;
delete from ordertotals;
select * from ordertotals;
rollback;
select * from ordertotals;
使用commit
- 一般的MySQL语句都是直接针对数据库表执行和编写的,这就是所谓的隐含提交(implicit commit),即提交写或保存操作是自动进行的
- 但是,在事务处理块中 提交不会隐含地进行。为进行明确的提交,使用commit语句
- 隐含事务关闭,当commit或rollback语句执行后,事务会自动关闭
start transaction ;
delete from table.where sid = 1;
commit;
使用保留点
- 为了支持回退不分手事务处理,必须能在事务处理块中合适的位置放置占位符
- savepoint delete1;
- rollback to delete1;
- 保留点越多越好,因为保留点越多,你就越能按自己的意愿灵活地进行回退
- 释放保留点 保留点在事务处理完成后自动释放,也可用release savepoint明确地释放保留点
- 更改默认的提交行为,set autocommit = 0(假),不自动提交