SQL必知必会-笔记(十三)管理事务处理

事务处理用来维护数据库的完整性,它保证成批的MYSQL操作要么完全执行,要么完全不执行。如果没有错误发生,整组语句提交给写到数据库表,如果发生错误,则进行回退以恢复数据库到某个已知且安全的状态。

术语:

  • 事务:指一组SQL语句
  • 回退:指撤销指定SQL语句的过程
  • 提交:指将未存储的SQL语句结果写入数据库表
  • 保留点:指事务处理中设置的临时占位符,你可以对它发布回退(与回退整个事务处理不同)

控制事务处理

使用START TRANSACTION标识事务的开始,使用ROLLBACK命令来回退MySQL语句。
-- 执行select显示该表不为空
select * from ordertotals;
-- 开始一个事务处理
start transaction ;
-- 删除ordertotals表中所有的行
delete from ordertotals;
-- 验证ordertotals为空
select * from ordertotals;
-- 使用rollback语句回退事务开始之后的所有语句
rollback ;
select * from ordertotals;

rollback只能在一个事务处理内使用,且不能回退create或者drop操作。在事务处理中可以使用这两条语句,但如果你执行回退,它们不会被撤销。

在事务处理模块中,提交不会隐含的进行,为进行明确的提交,使用COMMIT语句

为指示MYSQL不自动提交更改,需要使用set autocommit=0

start transaction;
-- 使用事务保证订单20010不会被部分删除
delete from OrderItems where order_num = 20010;
delete from Orders where order_num = 20010;
-- 仅在不出错的时候写出更改,如果第一条delete起作用,但是第二条失败,则delete不会被提交
commit ;
-- 当commit或rollback语句执行后,事务会自动关闭
为了支持部分回退事务处理,必须能在事务处理块中合适的位置放置占位符,这些哦占位符被称为保留点,使用SAVEPOINT语句。

SAVEPOINT delete1;
ROLLBACK TO delete1;

转载于:https://www.cnblogs.com/xLI4n/p/10412368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值