电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第8章 数据保护(事务和锁)VIP免费

第8章 数据保护(事务和锁)_第1页
1/43
第8章 数据保护(事务和锁)_第2页
2/43
第8章 数据保护(事务和锁)_第3页
3/43
第八章数据保护之事务和锁8.3事务处理8.4锁8.3事务处理一、事务简介1.事务由来2.什么是事务3.事务属性及分类二、管理事务1.隐性事务2.自动提交事务3.显式事务一、事务简介1.事务由来使用DELETE命令或UPDATE命令对数据库进行更新时一次只能操作一个表,这会带来数据库的数据不一致的问题(即使已经设置级联删除或修改,计算机内部也是分别先后删除每一个表)。例如:在FACTORY数据库中,若取消了“市场部”,需要将‘市场部’从depart表中删除,要修改depart表,而WORKER表中的部门号与市场部相对应的职工也应删除。因此,两个表都需要修改,这种修改只能通过两条DELETE语句进行。假设市场部编号为‘3’第一条DELETE语句修改depart表deletefromdepartwhere部门号=’3’第二条DELETE语句修改WORKER表deletefromWORKERwhere部门号=’3’在执行第一条DELETE语句后,数据库中的数据已处于不一致的状态,因为此时已经没有“市场部”了,但WORKER表中仍然保存着属于“市场部”的员工记录。只有执行了第二条DELETE语句后数据才重新处于一致状态。但是,如果执行完第一条语句后,计算机突然出现故障,无法再继续执行第二条DELETE语句,则数据库中的数据将处于永远不一致的状态。因此,必须保证这两条DELETE语句同时执行。为解决类似的问题,数据库系统通常都引入了事务(Transaction)的概念。2.什么是事务事务是单独的逻辑工作单元,也是一个操作序列,该单元中可以包含多个操作以完成一个完整的任务。如果事务成功,在事务中所做的所有的操作都会在提交时完成并且永久地成为数据库的一部分。如果事务遇到错误,则必须取消或回滚,这样所有的操作都将被消除,就象什么也没有执行过一样。事务作为一个整体,只有两种状态:要么成功,要么失败。事务具有ACID属性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Duration)事务可以分为显式事务和自动提交事务、隐式事务。3.事务属性及分类1.显式事务2.自动提交事务3.隐性事务二、管理事务1.显式事务在显式事务中,事务的语句在BEGINTRANSACTION和COMMITTRANSACTION子句间组成一组。使用下列四条语句来管理事务:(1)BEGINTRANSACTION(2)COMMITTRANSACTION(3)ROLLBACKTRANSACTION(4)SAVETRANSACTION1).BEGINTRANSACTION标记一个显式本地事务的起始点,SQLServer可使用该语句来开始一个新的事务。语法格式如下:BEGINTRAN[SACTION][transaction_name|@tran_name_variable[WITHMARK['description']]]注意:任何有效的用户都具有默认的BEGINTRANSACTION权限。2).COMMITTRANSACTIONCOMMITTRANSACTION标志一个成功的隐性事务或显示事务的结束。语法格式如下:COMMIT[TRAN[SACTION][transaction_name|@tran_name_variable]]注意:事务的提交使得占用的资源被释放,所做的修改在数据库中成为永久有效。3).ROLLBACKTRANSACTIONROLLBACKTRANSACTION将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。语法格式如下:ROLLBACK[TRAN[SACTION][transaction_name|tran_name_variable|savepoint_name|@savepoint_variable]]回滚事务还可以使用ROLLBACKWORK语句,其语法格式为:ROLLBACK[WORK]注意:不带savepoint_name和transaction_name的ROLLBACKTRANSACTION回滚到事务的起点。4).SAVETRANSACTIONSAVETRANSACTION是在事务内设置保存点。用户可以在事务内设置保存点或标记。保存点定义如果有条件地取消事务的一部分,事务可以返回的位置。语法格式如下:SAVETRAN[SACTION]{savepoint_name|@savepoint_variable}5).事务日志WITHMARK使得事务名被记录到事务日志中,以便维护数据库的一致性并为恢复提供援助。日志是一片存储区,并自动追踪数据库的所有变化,但非日志运算不记录到日志中。在进行数据更新执行过程中,修改行数据在未写入数据库前,先被记录到日志中。SQLServer采用下列方式应用(前滚)或收回(回滚)每个事务:(1)在应用事务日志时,事务将前滚。(2)当收回未完成的事务时,事务将回滚。注意:部分语句不能应用于事务处理中(即这些操作对数据库的...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第8章 数据保护(事务和锁)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部