数据保护(事务和锁)

数据保护(事务和锁)

ID:46233211

大小:405.84 KB

页数:43页

时间:2019-11-21

数据保护(事务和锁)_第1页
数据保护(事务和锁)_第2页
数据保护(事务和锁)_第3页
数据保护(事务和锁)_第4页
数据保护(事务和锁)_第5页
资源描述:

《数据保护(事务和锁)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章数据保护之事务和锁8.3事务处理8.4锁8.3事务处理一、事务简介1.事务由来2.什么是事务3.事务属性及分类二、管理事务1.隐性事务2.自动提交事务3.显式事务一、事务简介1.事务由来使用DELETE命令或UPDATE命令对数据库进行更新时一次只能操作一个表,这会带来数据库的数据不一致的问题(即使已经设置级联删除或修改,计算机内部也是分别先后删除每一个表)。例如:在FACTORY数据库中,若取消了“市场部”,需要将‘市场部’从depart表中删除,要修改depart表,而WORKER表中的部门号与市场部相对应的职工也应删除。因此,两个

2、表都需要修改,这种修改只能通过两条DELETE语句进行。假设市场部编号为‘3’第一条DELETE语句修改depart表deletefromdepart where部门号=’3’第二条DELETE语句修改WORKER表deletefromWORKER where部门号=’3’在执行第一条DELETE语句后,数据库中的数据已处于不一致的状态,因为此时已经没有“市场部”了,但WORKER表中仍然保存着属于“市场部”的员工记录。只有执行了第二条DELETE语句后数据才重新处于一致状态。但是,如果执行完第一条语句后,计算机突然出现故障,无法再继续执行第

3、二条DELETE语句,则数据库中的数据将处于永远不一致的状态。因此,必须保证这两条DELETE语句同时执行。为解决类似的问题,数据库系统通常都引入了事务(Transaction)的概念。2.什么是事务事务是单独的逻辑工作单元,也是一个操作序列,该单元中可以包含多个操作以完成一个完整的任务。如果事务成功,在事务中所做的所有的操作都会在提交时完成并且永久地成为数据库的一部分。如果事务遇到错误,则必须取消或回滚,这样所有的操作都将被消除,就象什么也没有执行过一样。事务作为一个整体,只有两种状态:要么成功,要么失败。事务具有ACID属性:原子性(At

4、omicity)一致性(Consistency)隔离性(Isolation)持续性(Duration)事务可以分为显式事务和自动提交事务、隐式事务。3.事务属性及分类1.显式事务2.自动提交事务3.隐性事务二、管理事务1.显式事务在显式事务中,事务的语句在BEGINTRANSACTION和COMMITTRANSACTION子句间组成一组。使用下列四条语句来管理事务:(1)BEGINTRANSACTION(2)COMMITTRANSACTION(3)ROLLBACKTRANSACTION(4)SAVETRANSACTION1).BEGINTRA

5、NSACTION标记一个显式本地事务的起始点,SQLServer可使用该语句来开始一个新的事务。语法格式如下:BEGINTRAN[SACTION][transaction_name

6、@tran_name_variable[WITHMARK['description']]]注意:任何有效的用户都具有默认的BEGINTRANSACTION权限。2).COMMITTRANSACTIONCOMMITTRANSACTION标志一个成功的隐性事务或显示事务的结束。语法格式如下:COMMIT[TRAN[SACTION][transaction_name

7、@

8、tran_name_variable]]注意:事务的提交使得占用的资源被释放,所做的修改在数据库中成为永久有效。3).ROLLBACKTRANSACTIONROLLBACKTRANSACTION将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。语法格式如下:ROLLBACK[TRAN[SACTION][transaction_name

9、tran_name_variable

10、savepoint_name

11、@savepoint_variable]]回滚事务还可以使用ROLLBACKWORK语句,其语法格式为:ROLLBACK[WORK]注

12、意:不带savepoint_name和transaction_name的ROLLBACKTRANSACTION回滚到事务的起点。4).SAVETRANSACTIONSAVETRANSACTION是在事务内设置保存点。用户可以在事务内设置保存点或标记。保存点定义如果有条件地取消事务的一部分,事务可以返回的位置。语法格式如下:SAVETRAN[SACTION]{savepoint_name

13、@savepoint_variable}5).事务日志WITHMARK使得事务名被记录到事务日志中,以便维护数据库的一致性并为恢复提供援助。日志是一片存储区,

14、并自动追踪数据库的所有变化,但非日志运算不记录到日志中。在进行数据更新执行过程中,修改行数据在未写入数据库前,先被记录到日志中。SQLServer采用下列方式应用(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。