26 管理事务处理

事务处理:

维护数据库的完整性,保证成批的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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值