- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章SQLServer_事务和锁报告
事务和触发器他们有时候是功能是等同的,只是实现方式不同而已 触发器应该慎用,相对来说事务的执行效率要高,因为触发器是并发的,多条语句同时执行, 而事务中, 是一句一句执行的. 如果事务结束前.出现错误.那么整个事务就会回滚. 取消之前的所有操作. 触发器对于数据来说,也不便于维护。 用事务的话. 执行第一个正常,第二个出错.可以回滚.那么第一个执行正常的 也不会更新数据. 用触发器就不一样了. 第一个或者第二个执行正常与否,与另一条无关. 一般金融机构,多用户并发系统都采用事务来出来数据,更好的保证了数据的完整性和同一性。 银行转帐 资金从帐户A转到帐户B,至少需要两步: 帐户A的资金减少 然后帐户B的资金相应增加 假定张三的帐户直接转帐1000元到李四的帐户 错误原因分析: 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作 这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行 事务是一个不可分割的工作逻辑单元 转帐过程就是一个事务。 它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转帐业务也应取消,两个帐户中的余额应恢复到原来的数据,从而确保转帐前和转帐后的余额不变,即都是1001元。 隔离性(Isolation):在事务完成前,它对数据库的修改对其它事务必定不可见。这表明事务是必须独立的,它不应以任何方式依赖于或影响其他事务。在并发数据操作时,不同的事务拥有各自数据空间,它们的操作不会对对方产生干扰。数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性越好,但并发性越弱。 持久性(Durabiliy) :事务的持久性意味着只有当事务提交以后,操作才会完成。如果系统相关事务刚刚完成后崩溃或重新启动,则必须保证对数据所做的修改不受其的影响。 事务控制 BEGIN TRANSACTION:该语句标记一个显 式事务的开始点,即事务开始。其语法如下: BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [ description ] ]????][ ; ] COMMIT TRANSACTION:该语句标志一个成功的隐性事务或显式事务的结束,即事务提交 其语法如下: COMMIT { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ][ ; ] 事务控制 ROLLBACK TRANSACTION :该语句将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。其语法如下: ROLLBACK { TRAN | TRANSACTION } ?????[ transaction_name | @tran_name_variable ?????| savepoint_name | @savepoint_variable ] [ ; ] 使用事务解决银行转帐问题 Print ‘查看转账事务之前的余额’ Select * FROM bank BEGIN TRANSACTION /*--定义变量,用于累计事务执行过程中的错误--*/ DECLARE @errorSum INT SET @errorSum=0 --初始化为0,即无错误 /*--转帐:张三的帐户少1000元,李四的帐户多1000元*/ UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三 SET @errorSum=@errorSum+@@error UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四 SET @errorSum=@errorSum+@@error --累计是否有错误 Print ‘查看转账事务中的余额’ Select * FROM bank IF @errorSum0 --如果有错误 BEGIN print 交易失败,回滚事务 ROLLBACK TRANSACTION END ELSE BEGIN print 交易成功,提交事务,写入硬盘,永久的保存 COMMIT TRANSACTION END GO print 查看转帐事务后的余额 SELECT * FROM bank GO 演示:转帐1000,转帐失败的情况 转帐800,转帐成功的情况: 事务的嵌套 虽然事务支
您可能关注的文档
- 第7课英国君主立宪制的建立【人教版】报告.ppt
- 第7课英国君主立宪制报告.ppt
- 第7部分_IP地址和域名系统报告.ppt
- 第7课铁器牛耕引发的社会变革报告.ppt
- 第7讲云计算_云存储_关键技术_当前热点报告.ppt
- 第8单元课题2金属的化学性质报告.ppt
- 第81章时序逻辑电路报告.ppt
- 第8导出作品报告.ppt
- 第8次课(矿山设计实例)报告.ppt
- 第7课第二次世界大战的爆发报告.ppt
- 难点详解鲁教版(五四制)6年级数学下册期末测试卷带答案详解(考试直接用).docx
- 难点详解鲁教版(五四制)6年级数学下册期末试题【培优】附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题及完整答案详解(全国通用).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(名师系列).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解【全国通用】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(突破训练)附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(能力提升)附答案详解.docx
- 难点详解京改版数学9年级上册期中试卷附参考答案详解【突破训练】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(有一套).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷带答案详解(夺分金卷).docx
最近下载
- 减肥打卡社群运营.pdf
- 时间管理之四象限法则的运用PPT(59张)课件.pptx VIP
- Unit 5 Whose dog is it_ Part A Spell 课件人教版英语五年级下册.pptx
- 价值管理的信息系统开发.pptx VIP
- 装饰装修施工组织设计(完整版).pdf
- 模板专项施工方案(完整版).docx
- 《最后一片叶子》课件高教版中职语文基础模块上册.pptx
- 光合速率的测定方法讲课教案.ppt
- 电气控制与可编程控制技术课程设-三相六拍步进电机PLC控制系统的设计.docx VIP
- 2024-2025学年苏科版八年级物理下册 第9章 压强和浮力【速记清单】(解析版).pdf VIP
文档评论(0)