第19章SQLServer事务和并发控制.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第19章SQLServer事务和并发控制

第19章 SQL Server 事务和并发控制 1.1 事务 19.1.1 事务的概念 事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。遇到错误时,可以回滚事务,取消事务内所做的所有改变,从而保证数据库中数据的一致性和可恢复性。 举一个简单的例子,ATM机。 你通过ATM系统转账。你有1000元,对方有1000元。你将把500元从你的账户划到对方账户,最终的结果是你有500元,对方的账户1500元。但在交易时,当你从帐上取走500元后,软件出现故障,没有来得及去给对方存钱,也就是你的账户少了500,而对方并没有增加。这就会导致数据的不一致性存在。而通过事务,就可以实现。 1、事务的特性 原子性:事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一事务的执行不能被其它事务干扰。 持续性(永久性):指事务一旦提交,则其对数据库中数据的改变就应该是永久的 2、事务和批的区别 编程时,一定要区分事务和批的差别。 1)批是一组整体编译的SQL语句,事务是一组作为单个逻辑工作单元执行的SQL语句。 2)批语句的组合发生在编译时刻,事务中语句的组合发生在执行时刻。 3)当在编译时,批中某个语句存在语法错误,系统将取消整个批中所有语句执行,而在运行时刻,如果事务中某个数据修改违反约束、规则等,系统默认只回退到产生该错误的语句。 一个事务中也可以拥有多个批,一个批里可以有多个SQL语句组成的事务,事务内批的多少不影响事务的提交或回滚操作。 19.1.2 事务对并发控制和保障 数据完整的重要性 1.事务与并发控制的关系 并发性是用来解决多个用户对同一数据进行操作时的问题。 特别是对于网络数据库来说, 这个特点更加突出。 例如:在线售票系统。 假设有一个订票系统,在9:00这个时刻,甲乙同时在2个窗口买票,甲买5张,已买 10张。正常情况下剩余票数是5--5-10=35张。 如果数据库没有并发手段,则会出现以下两种情况: (1)甲先买上,将剩余票45写入数据库;乙后买上,将40写回数据库,因此剩余票数为40 (2)乙先买上,将剩余票40写入数据库;甲后买上,将45写回数据库,因此剩余票数为45 如果在用户并发访问期间没有保证多个事务正确的交叉运行,用户操作相同的数据时可能会产生一些意想不到的问题 2.事务对保障数据一致和完整性的作用 故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失 。 影响事务正常运行的故障有: (1)事务内部的故障 (2)系统故障 (3)介质故障 (4)计算机病毒 19.2 事务的分类 SQL Server 的事务模式可分为显式事务、隐式事务和自动事务三种。 1) 显式事务 显式事务是指由用户执行T-sql事务语句而定义的事务,这类事务又称做用户定义事务。定义事务的语句包括: BEGIN TRANSACTION:标识一个事务的开始,即启动事务。 COMMIT TRANSACTION、COMMIT WORK:标识一个事务的结束,事务内所修改的数据被永久保存到数据库中。 ROLLBACK TRANSACTION、ROLLBACK WORK:标识一个事务的结束,说明事务执行过程中遇到错误,事务内所修改的数据被回滚到事务执行前的状态。 2) 隐式事务 在隐式事务模式下,在当前事务提交或回滚后,SQL Server自动开始下一个事务。 所以,隐式事务不需要使用BEGIN TRANSACTION语句启动事务,而只需要用户使用ROLLBACK TRANSACTION、ROLLBACK WORK、COMMIT TRANSACTION、COMMIT WORK等语句提交或回滚事务。在提交或回滚后,SQL Server自动开始下一个事务。执行SET IMPLICIT_TRANSACTIONS ON语句可使SQL Server进入隐式事务模式。在隐式事务模式下,当执行下面任意一个语句时,可使SQL Server重新启动一个事务: 所有CREATE语句、ALTER TABLE、所有DROP语句、TRUNCATE TABLE、GRANT REVOKE、INSERT、UPDATE、DELETE、SELECT、OPEN、FETCH需要关闭隐式事务模式时,调用SET语句关闭IMPLICIT_TRANSACTIONS OFF连接选项即可。 3) 自动事务模式 在自动事务模式下,当一个语句被成功执行后,它被自动提交,而当它执行过程中产生错误时,被自动回滚。自动事务模式是SQL S

文档评论(0)

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

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

1亿VIP精品文档

相关文档