26 管理事务处理

来源:互联网 发布:串口调试软件 编辑:程序博客网 时间:2024/06/08 06:16

事务处理:

维护数据库的完整性,保证成批的MySQL操作,要么完全执行,要么完全不执行。

具体操作:

如果没有发生错误,则整组语句提交给数据库表;如果发生错误,则进行回退,以恢复数据到某个已知且安全的状态。

相关术语:

  • 事务(transaction),指一组SQL语句;
  • 回退(rollback),指撤销指定SQL语句的过程;
  • 提交(commit),指未存储的SQL语句结果写入数据库表;
  • 保留点(savepoint),指事务处理过程中设置的临时占位符,可以对它发布回退。

哪些语句不能回退:

create 或drop操作(也就是执行回退,它们并不会被撤销。)

控制事务处理:

事务的开始:

start   transaction

使用回退(rollback):

select * from ordertotals;                                                                  //显示ordertotals表的内容,不为空                         
start   transaction;                  //开始事务处理
delete from ordertotals;                                                                     //删除ordertotals表所有行
selete * from ordertotals;                                                                  //显示ordertotals表确实为空
rollback;        //回退(撤销)start   transaction之后的所有语句
selete * from ordertotals;                                                                  //显示ordertotals表不为空

显然:rollback只能在一个事务处理内使用。

使用提交(commit)

一般的MySQL语句,提交是自动进行的。
但在事务处理块中,提交不会隐含地进行。

例:确保完全删除订单20010
start   transaction;
delete from orderitems where order_num=20010;
delete from orders where order_num=20010;
commit;

隐含事务关闭

当commit或rollback语句执行后,事务会自动关闭。

使用保留点

对简单的事务可以整个提交、回退;但是复杂的事务,需要部分提交、回退。

实现:

在合适的位置放置占位符,在需要的时候,可以会退到占位符。

savepoint deletel;
rollback deletel;

保留点在执行一条rollback或commit后自动释放。

更改默认提交

set autocommit=0;           //指示MySQL不自动提交更改。
autocommit决定是否自动提交更改,不管有没有commit。

原创粉丝点击