第15章 事务与并发控制75086.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第15章 事务与并发控制75086.ppt

第15章 事务与并发控制 本章导学 事务的概念 事务的概念 一次成功的网上交易需要系统提供多方支持,数据库相关的操作构成一个事务。 1. 买家所购商品库存减少 2. 卖家交易记录增加 3. 买家交易记录增加 4. 付款所涉及买方、卖方和相关金融机构系统数据更新 5. 物流信息处理 事务的概念 事务是一个由Transact-SQL组成的作为单个逻辑工作单元执行的一系列操作 。 这个单元块中的语句是一个整体,不能分割,要么都执行要么都不执行,绝不能只完成部分操作,而还有一些操作没有完成。 事务中任何一个语句执行时出错,系统都会返回到事务开始前的状态。 ACID属性 事务必须满足以下四个属性 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) ACID属性 原子性(Atomicity) 事务必须是原子工作单元,对于数据的操作,要么全都执行,要么全都不执行。 例 子 将一名学生从1班转到2班,需要执行以下操作: 将该学生信息从1班删除 1班人数减1 将该学生信息添加到2班 2班人数加1 ACID属性 一致性(Consistency) 完成事务时,必须保证所有数据都的一致性。 例 子 将一名学生从1班转到2班,定义如下事务: 将该学生信息从1班删除 1班人数减1 将该学生信息添加到2班 ACID属性 隔离性(Isolation) 由并发事务所做的数据修改必须与任何其它并发所做的同一数据的修改隔离。 事务查看的数据所处状态,要么是一个并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。 例如 事务1:教师修改学生的成绩 事务2:学生查看自己的成绩 事务2执行查看的是事务1执行前的或执行后的状态。 ACID属性 持久性(Durability) 事务对于数据库系统的影响是永久性的 事务对数据所做的的修改是永久的,即使该修改会导致致命的系统故障。 创建事务-基本语法 启动事务 BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [ ‘description’ ] ]] 提交事务 COMMIT { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] 创建事务-基本语法 回滚事务 ROLLBACK { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable| savepoint_name | @savepoint_variable ] 注 意 回滚某事务必须在它的提交语句之前才有效 ROLLBACK TRAN语句回滚到最外层事务的起点 创建事务-基本语法 设置保存点 SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable } 创建事务-基本语法 常用系统变量 @@TRANCOUNT BEGIN TRAN:@@TRANCOUNT加1 ROLLBACK TRAN | WORK:@@TRANCOUNT还原为0 ROLLBACK TRAN savepoint_name:不影响@@TRANCOUNT COMMIT TRAN | WORK:@@TRANCOUNT减1 创建事务-实例分析 任务一:提交事务 提出问题 学号为“S036”的学生艾家羽完成了编号为“C010”的日语课程的学习,考试取得成绩为88。因此,该生已修总学分也相应增加。编写SQL语句,完成该生的信息修改,并防止在数据修改过程中发生意外状况导致数据不一致。 创建事务-实例分析 任务一:提交事务 分析问题 编写UPDATE语句更新Register表中的成绩。 编写UPDATE语句更新该生在Student表中的学分信息。 将以上两个操作纳入一个事务中,作为一个逻辑单元来执行。 创建事务-实例分析 任务一:提交事务 问题求解 BEGIN TRANSACTION StuCreditTran --开始事务 UPDATE Register SET score=88 WHERE stuNo=S036 AND classNo=C010 DECLARE @credit int SELECT @credit=classCredit FROM Classes WHERE classNo=C010 UPDATE Student SET stuTotalCredit=stuTotalCredit+@credit WH

文档评论(0)

dreamclb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档