SQL Server 2008数据库应用与开发教程(第二版) 教学课件 978 7 302 24453 0 第12章 SQL的高级应用.pdf
文本预览下载声明
第 12 章
SQL 的高级应用
学习目标:
了解事务处理的概念和方法
掌握执行、撤销和回滚事务
了解引入锁的原因和锁的类型
掌握如何设置事务和锁的相关操作
12.1 事务(Transaction)
12.1.1 事务的由来
在SQL Server 2008中使用DELETE或UPDATE语句对数据库进
行更新时,一次只能操作一个表,但SQL Server 2008又允许多
个用户并发使用数据库。因此可能会带来数据库的数据不一致的
问题。
如现实中的转账过程,它需要两条UPDATE语句来完成业务流程:
从转出帐户A里减掉需转账的金额;
在转入帐户B里加上转账的金额。
这两个过程必须全部完成,整个转账过程才完成。否则,款项从A
帐户扣除了,正好此时因为其他原因导致程序中断,这样,B账户
没有收到款项,而A账户的钱也没有了,这样明显是错误的。
为了解决这种类似的情况,数据库管理系统提出了事务的概念:
将一组相关操作绑定在一个事务中,为了使事务成功,必须成功
完成该事务中的所有操作。
事务对上面转账问题的解决方法是:把转出和转入作为一个整体,
形成一个操作集合,这个集合中的操作要么都不执行,要么都执
行。
12.1.2 事务的概念
事务(TRANSACTION )是由对数据库的若
干操作组成的一个逻辑工作单元,这些操作作
为要么都执行,要么都不做,是一个不可分割
的整体。事务用这种方式保证数据满足并发性
和完整性的要求。使用事务可以避免发生有的
语句被执行,而另外一些语句没有被执行,从
而造成数据不一致的情况。
12.1.3 事务的特性
事务的处理必须满足四原则,即原子性(A )、一致性(C)、隔离性(I)
和持久性(D),简称ACID原则:
原子性(Atomicity ):事务必须是原子工作单元,事务中的操作要么全
部执行,要么全不执行,不可只完成部分操作。原子性在数据库系统中,
由恢复机制来实现;
一致性(Consistency):事务开始前,数据库处于一致性的状态;事
务结束后,数据库必须仍处于一致性状态。数据库一致性的定义是由用
户负责的,如前面所述的银行转账,用户可以定义转账前后两个帐户金
额之和应该保持不变;
隔离性(Isolation):系统必须保证事务不受其他并发执行事务的影响,
即当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。事务
查看数据时所处的状态,要么是另一个并发事务修改它之前的状态,要
么是另一个并发事务修改它之后的状态,事务不会查看中间状态的数据。
隔离性通过系统的并发控制机制实现;
持久性(Durability):一个已完成的事务对数据所做的任何变动在系统
中是永久有效的,即使该事务产生的修改是不正确,错误也将一直保持。
持久性通过恢复机制实现,发生故障时,可以通过日志等手段恢复数据
库信息。
事务四原则保证了一个事务或者成功提交,或者失败滚回,二者必居其
一,因此它对数据的修改具有可恢复性。即当事务失败时,它对数据的
修改都会恢复到该事务执行前的状态。
12.1.4 事务的工作原理
事务以BEGIN TRANSACTION开始,以
COMMIT TRANSACTION或ROLLBACK
TRANSACTION结束。
其中,COMMIT TRANSACTION表示事务正
常结束,提交给数据库,而ROLLBACK
TRANSACTION表示事务非正常结束,撤销
事务已经做的操作,回滚到事务开始时的状态。
12.1.5 事务的执行模式
SQL Server的事务可以分为两类:显式事务和隐性
事务
1. 隐性事务
一条T-SQL语句就是一个隐性事务,也叫系统提供的
事务。
例如执行如下的创建表语句:
CREATE TABLE aa (f1 int not null, f2 char(10), f3
varchar(30))
这条语句本身就构成了一个事务,他要么建立包含3
列的表,要么对数据库没有任何影响。不会出现建立
只含1列或者2列的表的情况。
2. 显式事务
显式事务又称为用户定义的事务。事务有一个开头和
显示全部