- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[数学]第9章 事务.ppt
* * * 事务的嵌套 在一个事务中可以嵌套其他事务,当回滚父事务时,已经提交的子事务也会被回滚 准备数据环境 CREATE TABLE dbo.A ( A1 int, A2 int ); GO BEGIN TRAN T1; INSERT INTO dbo.A VALUES(1,1); BEGIN TRAN T2; INSERT INTO dbo.A VALUES(2,2); COMMIT TRAN T2; ROLLBACK TRAN T1; SELECT * FROM dbo.A; 演示:事务的嵌套 事务的保存点 在一个事务中,可以创建事务的保存点,然后将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点 BEGIN TRAN T1; INSERT INTO dbo.A VALUES(1,1); SAVE TRAN T11; DELETE FROM dbo.A; ROLLBACK TRAN T11; COMMIT TRAN T1; SELECT * FROM dbo.A; 演示:事务的保存点 案例 应用排它锁解决商品入库时的覆盖更新问题 --在事务的读操作中加入排他锁 BEGIN TRANSACTION; --定义变量,用于保存最新错误整数值 DECLARE @Error int; --第一步:修改存储数量 Declare @NumB int,@PriceB money,@NumE int,@PriceE money; Select @NumB=Num,@PriceB=AvgPrice From dbo.TMe_StockInfo WITH(XLOCK) Where MerchandiseID=M001; …… 演示:覆盖更新问题 总结 事务的四个特性? 如何创建事务? 事务有那些常用的锁? 事务的隔离级别有哪些? 什么是死锁,如何避免死锁? 上机作业 作业 使用事务实现商品入库 练习事务的隔离级别的案例 利用排他锁解决覆盖更新问题 * 课余作业 作业 总结本堂课的知识点 完善上机练习,并将练习结果保存为.sql脚本提交。 * 课后预习 预习内容 什么是索引? 索引的种类? 如何创建索引? * * 讲解要点: 假定资金从帐户A转到帐户B,至少需要两步,即帐户A的资金减少,然后帐户B的资金相应增加 一般来说,只要是同一银行(例如都是农行),一般都支持帐户间直接转帐, 我们来看看上述提及的转帐问题,假定张三的帐户直接转帐1000元到李四的帐户。 * * 输出结果如图所示。 强调:目前两个帐户的总额为:1000+1=1001元, 转帐后他们两个帐户的余额应保持不变 。 * 强调: 事务是一个整体。如果其中一步失败了,那整个操作都取消; 如果每步都成功了,则整个操作才完成。 * 根据银行例子解释事务的四个特征: 原子性(Atomicity):事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。 再次以银行转帐事务为例,如果该事务提交了,则这两个帐户的数据将会更新。如果由于某种原因,事务在成功更新这两个帐户之前中止,则不会更新这两个帐户余额,并且会撤销对任何帐户余额的修改。事务不能部分提交。 一致性(Consistency):当事务完成时,数据必须处于一致状态。也就是说,在事务开始之前,数据存储中的数据处于一致状态。在正在进行的事务中,数据可能处于不一致的状态,例如,数据可能有部分修改。然而,当事务成功完成时,数据必须再次回到已知的一致状态。通过事务对数据所做的修改不能损坏数据,或者说事务不能使数据存储处于不稳定的状态。 再次以银行事务为例。在事务开始之前,所有帐户余额的总额处于一致状态。在事务进行过程中,一个帐户余额减少,而另一个帐户余额尚未修改。因此,所有帐户余额的总额处于不一致状态。事务完成以后,帐户余额的总额再次恢复一致状态。 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。另外,当事务修改数据时,如果任何其他进程正在同时使用相同的数据,则直到该事务成功提交之后,对数据的修改才能生效。张三和李四之间的转帐以及王五和赵二之间,永远是相互独立的。 持久性(Durability):事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。银行的转帐事务,即使出现停电等突发事件,也不会影响数据的正确处理。 * 讲解管理事务的三种操作语句
文档评论(0)