网站大量收购独家精品文档,联系QQ:2885784924

SQL SERVER 事务.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
createtablebank ( customervarchar(20),--客户姓名 currentMoneymoney --当前余额 ) --银行规定:每个卡上必须要有元钱 altertablebank addconstraintCK_BANK_CURRENTMONEYcheck(currentMoney=1); --模拟两个用户 insertintobankvalues(张三,1000); insertintobankvalues(李四,1); select*frombank; --李四找张三借元钱 --(1)将张三的余额减少 updatebanksetcurrentMoney=currentMoney-1000wherecustomer=张三; select@@error; --返回如果不为,表示上面的SQL语句执行有问题。 --(2)将李四的余额要增加 updatebanksetcurrentMoney=currentMoney+ 1000wherecustomer=李四; select@@error; --返回如果不为,表示上面的SQL语句执行没有问题。 --事务:将需要做一件事情的所有步骤当做一个整体执行,要么所有步骤都执行,要么一个 步骤都不执行。 /* 事务必须具备以下四个属性,简称ACID 属性: 原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要 么都执行,要么都不执行 一致性(Consistency):当事务完成时,数据必须处于一致状态 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立 的,它不应以任何方式依赖于或影响其他事务 永久性 (Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务 的永久性 */ --显示事务(常用): --(1)开始事务: begintransaction; --(2)提交事务: committransaction; --(3)回滚事务: rollbacktransaction; --隐性事务: SETIMPLICIT_TRANSACTIONSON SETIMPLICIT_TRANSACTIONSOFF deletefrombankwherecustomer=李四; select*frombank; deletefrombank; --自动提交事务:这是SQLServer 的默认模式,它将每条单独的T-SQL 语句视为一个事务, 如果成功执行,则自动提交;如果错误,则自动回滚 --转账出现了问题,如果解决?要使用事务 --决定什么时候提交事务?什么时候回滚事务?需要根据@@error的值来决定。 @@error 只记录上一条SQL语句的执行状态如果成功,返回,如果不成功,返回非的值 --第一步:开启事务 begintransaction; declare@myerrorint --声明一个变量,用来记录所有SQL语句执行完成后的状态值 set@myerror=0 --默认为表示无错误 --(1)将张三的余额减少 updatebanksetcurrentMoney=currentMoney-1000wherecustomer=张三; set@myerror=@myerror+@@error; --(2)将李四的余额要增加 updatebanksetcurrentMoney=currentMoney+ 1000wherecustomer=李四; set@myerror=@myerror+@@error; if(@myerror0) begin print对不起,转账未成功! --第二步:回滚事务 rollbacktransaction; end; else begin print恭喜您,转账成功 --提交事务 committransaction; end; go print转账后的状态为: go select*frombank; --什么是事务? --什么时候用到事务?类似银行转账,自动记录日志 --事务的特性:ACID --掌握如何使用显示事务? --假设银行规定每个员工在操作完客户的信息后,都必须将操作的记录保存到银行的日志表 中。 --编写一个事务。用来模拟往银行表中修改数据的时候,自动完成日志的插入,如果存款成 功,插入工作人员,时间,以及记录修改的信息 --如果存款不成功,那么记录工作人员,时间,以及记录修改的信息 crea

文档评论(0)

cjlfjy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档