2023学年完整公开课版事务和锁_第1页
2023学年完整公开课版事务和锁_第2页
2023学年完整公开课版事务和锁_第3页
2023学年完整公开课版事务和锁_第4页
2023学年完整公开课版事务和锁_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章数据库编程

5.6事务与锁

5.6.1事务5.5触发器5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器 5.5.1触发器概述 5.5.2触发器的创建和应用 1语法格式 2体验触发器 3Inserted表和Deleted表 5.5.3触发器实例 1After触发器 2Insteadof触发器 5.5.4管理触发器5.6事务与锁5.7实训:商店管理系统的编程5.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程1事务的概念A在银行有2000元存款B在银行有3000元存款A在银行有1500元存款B在银行有3500元存款A转500元给B1、从A中减500元2、将500元加到B中两个严重的问题停电了问题一?4500问题二1事务的概念A在银行有2000元存款B在银行有3000元存款A在银行有1500元存款B在银行有3500元存款2、将500元加到B中1、从A中减500元将多个操作组成一个整体,要么都执行,要么都不执行。这样的一个整体就是事务。如何解决这两个问题5.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程2事务的特性多个操作组成一个整体原子性要么都执行(新的一致性状态)要么都不执行(旧的一致性状态)一致性事务之间不能相互干扰隔离性一旦完成,数据库的改变是永久的持久性2事务的特性事务被强制中止时,不会对数据库造成影响事务AA0A1事务BB0B1事务CC0C1时间点1事务DD0D1时间点22事务的特性事务被强制中止时,不会对数据库造成影响多个事务并发执行时,相互之间没有影响事务AA0A1事务BB0B1事务CC0C1事务DD0D15.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程3事务控制语句操作1操作2操作N异常?BegintransactionCommitRollback事务5.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程4事务实例批增删改事务存储过程增删改事务触发器增删改事务4事务实例存储过程参数:课程名、教师姓名功能:向教师表插入教师向课程表插入课程声明变量查询教师的主键有主键插入课程插入教师YN事务声明变量查询教师的主键有主键插入课程插入教师成功YYNN提交提交回滚5.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程5.6.2DML语句执行流程SQLServer提供默认的事务管理策略每一条单独的DML语句就是一个事务结束时自动提交DML语句事务提交错误5.6.2DML语句执行流程插入语句的内部机制5.6.2DML语句执行流程插入语句的内部机制5.6.2DML语句执行流程自增量、为空性、数据类型各项约束检查提交事务、写入数据文件Insteadof触发器执行Insteadof触发器执行插入语句执行After触发器回滚出现异常5.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程事务之间的隔离级别事务之间可能出现的问题有五种,按严重程度从左到右排列如下表通过设定隔离级别可以避免某些问题最严重最不严重低高隔离级别与锁SQLServer使用锁来实现隔离级别按锁的大小分类:行锁、页锁、表锁、数据库锁和键锁按锁的用途分类:共享锁、排它锁、更新锁、意向锁、和架构锁例如排它锁可以在更新时防止其他用户读取到不一致的数据从而与其他事务隔离开来5.6事务与锁5.1编程基础5.2游标5.3函数5.4存储过程5.5触发器5.6事务与锁 5.6.1事务 1事务的概念 2事务的特性 3事务控制语句 4事务实例 5.6.2DML语句执行流程 5.6.3锁机制 5.6.4更新丢失5.7实训:商店管理系统的编程5.6.4更新丢失如何避免第二类更新丢失第二类更新丢失的原因数据库审核员客户发货员下订单确认订单查询订单订单信息取消订单确认取消审核通过确认审核发货发货成功下订单审核发货ABCD第二类更新丢失是指个或多个事务读取同一数据并进行修改其中一个事务的修改结果破坏了另一个事务修改的结果一是修改业务逻辑,不允许客户在下订单后再取消订单二是在应用程序中增加防止第二类更新丢失的措施第二类更新丢失的防止如果不能修改业务流程,又不能出现更新丢失通常的做法是,为表增加一个时间戳列(timestamp)时间戳的值是系统自动维护的,查询数据时不会改变插入或更新操作都将使该值增加1,因此也称为行版本号第二类更新丢失的防止Declare@versiontimestamp; --审核员查询时,保存时间戳信息Select@version=timestamp frombook_order whereid=2;--可能出现取消订单等更新操作,只要有更新,timestamp的值就会改变Updatebook_order --审核员审核的Update语句

setstatus='审核' --改状态为已审核的订单

whereid=2 andtimestamp=@version; --只有时间戳没有改变才能Update成功更新失败意味着成功避免了一次更新丢

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论