事务和事务边界
10.1.2 事务和事务边界
http://book.51cto.com 2009-06-16 22:16 牛新庄 清华大学出版社 我要评论(0)
* 摘要:《循序渐进DB2-系统管理、运行维护与应用案例》第10章锁和并发,本章首先介绍了通用的事务概念,并指出DB2在用户读取、写入数据时的加锁策略、锁模式、兼容性等。本章还介绍了在并发控制中常碰到的4种数据异常现象,同时讲述了 DB2如何使用锁克服这些问题的。本节为大家介绍事务和事务边界。
* 标签:DB2 系统管理 循序渐进DB2-系统管理、运行维护与应用案例
*
10.1.2 事务和事务边界
事务(也称为工作单元)是一种将一个或多个SQL 操作组合成一个单元的可恢复操作序列,通常位于应用程序进程中。事务的启动和终止定义了数据库的一致性:要么将一个事务中执行的所有SQL操作的结果都应用于数据库(提交),要么完全取消并丢弃已执行的所有SQL操作的结果(回滚)。
运行嵌入式SQL应用程序或脚本,在可执行SQL语句第一次执行时(在建立与数据库的连接之后或在现有事务终止之后),事务就会自动启动。在启动事务之后,必须由启动事务的用户或应用程序显式地终止它,除非使用了称为自动提交(automatic commit)的过程(在这种情况下,发出的每个单独的SQL语句被看做单个事务,它一执行就被隐式地提交了)。
在大多数情况下,通过执行COMMIT或ROLLBACK语句来终止事务。当执行COMMIT语句时,自从事务启动以来对数据库所做的一切更改就成为永久性的了-- 即它们被写到磁盘。当执行ROLLBACK语句时,自从事务启动以来对数据库所做的一切更改都被撤销,并且数据库返回到事务开始之前所处的状态。不管是哪种情况,数据库在事务完成时都保证能回到一致状态。
一定要注意一点:虽然事务通过确保对数据的更改仅在事务被成功提交之后才成为永久性的,从而提供了一般的数据库一致性,但还是须要用户或应用程序来确保每个事务中执行的SQL操作序列始终会导致一致的数据库。
1. COMMIT和ROLLBACK操作的效果
正如前面提到的,通常通过执行COMMIT或ROLLBACKSQL语句来终止事务。为了理解这些语句如何工作,我们看下面的示例。
如果按所示的顺序执行下列SQL语句(由3个事务组成的简单工作负载):
1. CONNECT TO SAMPLE
2. CREATE TABLE DEPARTMENT (DEPT_ID INTEGER NOT NULL, DEPT_NAME VARCHAR(20))
3. INSERT INTO DEPARTMENT VALUES(100, 'PAYROLL')
4. INSERT INTO DEPARTMENT VALUES(200, 'ACCOUNTING')
5. COMMIT
6.
7. INSERT INTO DEPARTMENT VALUES(300, 'SALES')
8. ROLLBACK
9.
10. INSERT INTO DEPARTMENT VALUES(500, 'MARKETING')
11. COMMIT
这将创建一个名为DEPARTMENT的表,它的结构如表10-1所示。
表10-1 表DEPARTMENT的结构
DEPT_ID
DEPT_NAME
100
PAYROLL
200
ACCOUNTING
500
MARKETING
当执行第一个COMMIT语句时,创建名为DEPARTMENT的表并向表中插入两条记录,这两个操作都会变成永久性的。当执行到ROLLBACK语句时,删除插入DEPARTMENT表中的第三条记录,该表返回到执行插入?%
【责任编辑:云霞 TEL:(010)68476606】
回书目 上一节 下一节
上一篇: 10.1.1 数据一致性 下一篇: 10.1.3 锁的概念(1)
* 相关文章
* ·15.10 SQL0805和SQL0818错误
* ·15.9.12 对重要敏感数据加密
* ·15.9.11 使用LBAC控制数据访问
* ·15.9.10 使用存储过程控制数据访问
* ·15.9.9 使用视图控制数据访问
* 频道热门
* ·Python 3程序开发指南(第二版)
* ·Android开发进阶必读——评《精通Android 2》
* ·谈程序员的思维训练——评《程序员的思维修炼》
* ·6.2.4 创建完全整合的数据类型
* ·4.1 控制结构