第6章SQL高级应用.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章SQL高级应用剖析

第6章 SQL高级应用;按事务的启动和执行方式,可以将事务分为三类:; 显式事务从T-SQL 命令BEGIN TRANSACTION 开始,到COMMIT TRANSACTION或ROLLBACK TRANSACTION 命令结束。也就是说,显式事务需要显式地定义事务的启动和提交。;2.结束事务   如果没有遇到错误,可使用COMMIT TRANSACTION语句成功地结束事务。该事务中的所有数据修改在数据库中都将永久有效。事务占用的资源将被释放。   COMMIT TRANSACTION语句的语法格式如下:   COMMIT [TRAN[SACTION] [tran_name | @tran_name_variable]];3.回滚事务   如果事务中出现错误,或者用户决定取消事务,可回滚该事务。回滚事务是通过ROLLBACK语句来完成的。其语法格式如下:   ROLLBACK [TRAN[SACTION]     [tran_name | @tran_name_variable     | savepoint_name | @savepoint_variable]];【例6.1】 给出以下程序的执行结果。   USE school   GO   BEGIN TRANSACTION --启动事务 INSERT INTO student VALUES(100,陈浩,男,1992/03/05,1033) --插入一个学生记录   ROLLBACK --回滚事务   GO   SELECT * FROM student --查询student表的记录   GO   解:该程序启动一个事务向student表中插入一个记录,然后回滚该事务。正是由于回滚了事务,所以student表中没有真正插入该记录。;4.在事务内设置保存点   设置保存点使用SAVE TRANSACTION语句,其语法格式为:   SAVE TRAN[SACTION] {savepoint_name | @savepoint_variable}   用户可以在事务内设置保存点或标记。保存点是如果有条件地取消事务的一部分,事务可以返回的位置。;【例6.2】 给出以下程序的执行结果。; 解:该程序的执行结果如图6.2所示。从结果看到,由于在事务内设置保存点Mysavp,ROLLBACK TRANSACTION Mysavp只回滚到该保存点为止,所以只插入保存点前的一个记录,保存点之后的操作被清除。;5.不能用于事务的操作 在事务处理中,并不是所有的T-SQL语句都可以取消执行,一些不能撤消的操作(如创建、删除和修改数据库的操作),即使SQL Server取消了事务执行或者对事务进行了回滚,这些操作对数据库造成的影响也是不能恢复的。 ;6.1.3 自动提交事务;  在为连接将隐性事务模式设置为打开之后,当SQL Server首次执行某些T-SQL语句时,都会自动启动一个事务,而不需要使用BEGIN TRANSACTION语句。这些T-SQL语句包括:;【例6.3】给出以下程序的执行结果。;PRINT 使用隐式事务 GO --这里不需要BEGIN TRAN语句来定义事务的启动 INSERT INTO table2 VALUES(4) --插入一个记录 PRINT 事务内的事务数目:+ CAST(@@TRANCOUNT AS char(5)) COMMIT TRAN --事务提交 PRINT 事务外的事务数目:+ CAST(@@TRANCOUNT AS char(5)) GO;6.1.5 事务和异常处理;【例6.4】给出以下程序的功能和执行结果。; 解:该程序在test数据库中建立一个表table3,含一个唯一值的列no。事务Mytrans用于插入2个相同的记录,由CATCH捕捉到错误,然后执行事务回滚。程序执行时显示的出错消息如图6.5所示。该程序执行后,会建立table3表,但表中没有任何记录。; 如果不采用事务和异常处理相结合的方法,在建立table3表后直接执行以下程序:;6.2 数据的锁定; 当事务处理开始,表由稳定状态变为不稳定状态,系统将表锁定,如果此时有其他事务对此表进行更新操作,系统使处于等待状态,直到第一个事务处理结束,表由不稳定状态进入新的稳定状态,系统解除表的锁以后,其他事务才能操作此表,如图6.8所示。; SQL Server自动锁定所需的数据以保护事务的所有操作,包括数据操纵语言(DML)、数据定义语言(DDL)和所需隔离级别上的查询语句。 SQL Server自动锁定数据行和所有相关的索引页,以确保最大限度的并发性能。随着事务锁定更多的资源,锁的粒度将自动增

文档评论(0)

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

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

1亿VIP精品文档

相关文档