第7章 事务及并发控制.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 事务与并发控制 7.1 事务 7.1.2 事务类型与事务的状态 7.1.2 事务类型与事务的状态 7.1.2 事务类型与事务的状态 7.1.2 事务类型与事务的状态 7.1.2 事务类型与事务的状态 7.2 并发控制 7.2.1 并发控制需解决的问题 7.2.1 并发控制需解决的问题 7.2.1 并发控制需解决的问题 7.2.2 封锁 7.2.2 封锁 7.2.2 封锁 7.2.2 封锁 7.2.2 封锁 7.2.3 事务的隔离级别 7.2.4 死锁 7.2.4 死锁 7.2.4 死锁 习题 * * 7.1 事务 7.2 并发控制 7.1.1 事务的特性 事务具有如下特性: ① 原子性(Atomicity),事务是一个不可分割的整体,它对数据库的操作要么全做,要么全不做,即不允许事务部分地完成,若因故障而导致事务未能完成,则应通过恢复功能使数据库回到该事务执行前的状态。 ② 一致性(Consistency),事务对数据库的作用应使数据库从一个一致状态转换到另一个一致状态。一致状态是指数据库中的数据满足完整性约束。 ③ 隔离性(Isolation),多个事务并发执行时,应互不影响,其结果要和这些事务独立执行的结果一样。并发控制就是为了保证事务间的隔离性。 ④ 持久性(Durability),一旦事务执行成功,则该事务对数据库进行的所有更新都是持久的,即使因数据库故障而受到破坏,DBMS也能恢复。 事务的这些特性简称为ACID特性,DBMS一般都能保证事务的ACID特性。 1.事务类型 事务一般可分为两类:系统事务和用户定义的事务。系统事务又称为隐式事务,指某些特定的SQL语句由系统单独作为一个事务处理,包括的主要语句如下: ● 所有的CREATE语句; ● 所有的DROP语句; ● INSERT,UPDATE,DELETE语句。 例如,执行如下的创建表语句: CREATE TABLE xx ( f1 int not null, f2 char(10), f3 varchar(30) ) 这条语句本身就构成了一个事务,它要么建立含3列的表结构,要么对数据库没有任何影响。 在实际应用中,大量使用的是用户定义的事务。用户事务的定义方法:用BEGIN TRANSACTION语句指定一个事务的开始,用COMMIT或ROLLBACK语句表明一个事务的结束。注意必须明确指定事务的结束,否则系统将把从事务开始到用户关闭连接之间所有的操作都作为一个事务来处理。 (1)开始事务 语法格式: BEGIN TRANSACTION 功能:控制事务的开始。 (2)结束事务 ● 事务提交 语法格式: COMMIT 功能:COMMIT语句用于提交事务,即将事务对数据库的所有更新写到物理数据库中,同时,也标志一个事务的结束。 ● 事务回滚 语法格式: ROLLBACK 功能:事务回滚,即将事务对数据库已完成的操作全部撤销,回滚到事务开始时的状态,它也标志一个事务的结束,ROLLBACK语句将清除自事务的起点或到某个保存点所做的所有数据修改,并且释放由事务控制的资源。 以下例子说明事务处理语句的使用。 【例7.1】 定义一个事务,将 “计算机”专业学生的密码改为“1234”,并提交该事务。 BEGIN TRANSACTION USE XSCJ UPDATE XS SET 密码 = 1234 WHERE 专业 = 计算机 COMMIT 在SQL Server 2005中,ROLLBACK还可以加上选项[ TRAN[SACTION] 保存点名 |保存点变量名],保存点名或保存点变量名可用SAVE TRANSACTION语句设置: SAVE TRAN[SACTION] {保存点名 | @ 保存点变量名 } 【例7.2】 定义一个事务,向XSCJ数据库的XS表中插入一行数据,然后删除该行。 BEGIN TRANSACTION USE XSCJ INSERT INTO XS (学号, 姓名, 性别, 出生时间, 专业) VALUES 朱一虹, 1, 1989-10-21, 计算机应用) SAVE TRAN My_sav DELETE FROM XS WHERE 姓名 = 朱一虹 ROLLBACK TRAN My_sav COMMIT TRAN 执行上述事务后,可知:新插入的数据行并没有被删除,因为事务中使用ROLLBACK语句将操作回滚到保存点My_sav,即删除前的状态。 2.事务的状态 图7.1说明了一个事务对数据库进行操作时,其生存周期内可能进入的状态。 图7.1 事务的状态描述 活动状态

文档评论(0)

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

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

1亿VIP精品文档

相关文档