2021-07-07

事务的使用
开发工具与关键技术: MVC
作者:黄富健
撰写时间:2021/6/28
一、事务是什么?
1.数据库事务是指作为单个逻辑工作单元执行的操纵
2.举个例子:设想网上购物的一次交易,其付款过程至少包括一下数据库操作:
更新客户所购商品的库存信息
保存客户付款信息-可能包括与银行系统的交互
生成订单并且保存到数据库中
更新用户相关信息,例如购物数量等等
3.正常情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行账号存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保存交易前不变,比如最后一步更新用户信息失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态–库存信息没有被更新、用户也没付款,订单也没有生成。否则,数据库的信息将会是一片混乱
4.数据库事务正是用来保证这种情况下交易的平稳性和可预测性
二、数据库事务ACID属性
1.事务处理可以确保除非事务性单元内所有操作都成功完成,否则不会永久更新面向数据资源。通过将一组相关操作组合为要么全部成功要么全部失败得分单元,可以简化错误回复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACLD(原子性、一致性、隔离性、持久性)属性:
2.原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性除了系统处理操作子集的可能性
3.一致性
事务在完成时,必须使所有的数据都保存一致性。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已经知道的完整性约束。例如,当开发用于转账的应用程序时,
应避免在转账过程中任意移动小数点

5.隔离性
一个事务的执行不能被其它事务干扰。即一个事务内部的操作及使用的 数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
6.持久性
事务完成之后,它对系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保存。
三、事务的使用
1.一定要引入System.Transactions
2.下图就是个很简单的事务的使用
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值