网站大量收购闲置独家精品文档,联系QQ:2885784924

sql server第13章.ppt

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

运行结果如下图所示。 2)输入并执行以下SELECT语句检查事务是否被回滚。 SELECT * FROM Teacher; GO 运行结果如下图所示。 从图中可以看出,Teacher表中没有任何记录。因为第二条INSERT语句出现错误,所以流程跳到CATCH块。在CATCH块中,首先通过使用错误函数显示错误信息,然后显式地将整个事务回滚,所以系统回到事务开始以前的状态。 13.2.3 隐式事务 当连接以隐式事务模式进行操作时,SQL Server将在提交或回滚当前事务后自动启动新事务,无需描述事务的开始。但是,用户必须使用COMMIT或ROLLBACK语句显式地结束事务。 将隐式事务模式设置为打开之后,在首次执行下表中的任何语句时,都会自动启动一个事务。 隐式事务模式下能够自动启动一个事务的Transact-SQL语句 在发出COMMIT或ROLLBACK 语句之前,该事务将一直保持有效。在第一个事务被提交或回滚之后,下次当连接执行以上任何语句时,都将自动启动一个新事务。 【例13-3】使用隐式事务模式,创建一个表Teacher2,向表中插入记录,显示插入操作的结果。 1)在查询编辑器中输入并执行以下Transact-SQL语句,在当前连接上设置隐式事务模式。 SET IMPLICIT_TRANSACTIONS ON; GO 2)在查询编辑器中输入并执行以下Transact-SQL语句创建表Teacher2。 USE jw GO CREATE TABLE Teacher2( teacherid char(3) NOT NULL PRIMARY KEY, name varchar(50)); GO 3)使用系统函数@@TRANCOUNT来测试是否已经打开了一个事务。 SELECT @@TRANCOUNT AS [Transaction Count]; GO 运行结果如图所示。 从图中所示的结果可以看出,当前连接已经打开了一个事务。 4)提交事务并再次使用系统函数@@TRANCOUNT测试当前连接上打开的事务。 COMMIT TRANSACTION; GO? SELECT @@TRANCOUNT AS [Transaction Count]; GO 运行结果如图所示。 由图中所示结果可知,显示的结果为0,也就是说,使用COMMIT TRANSACTION命令提交事务后,事务结束。 5)执行以下语句关闭隐式事务模式。 SET IMPLICIT_TRANSACTIONS OFF; GO 13.2.4 嵌套事务 显式事务可以嵌套,即在一个显式事务中可以嵌套另一个显式事务。 【例13-4】使用事务的嵌套。在外层事务中创建一个表格,在内层嵌套的事务中向该表插入数据。内层事务和外层事务分别被提交。 1)输入以下语句。 USE jw GO? BEGIN TRANSACTION PRINT After the first begin-transaction:+CAST(@@TRANCOUNT AS char(1)) CREATE TABLE TempTable ( col1 int PRIMARY KEY, clo2 char(6)) BEGIN TRANSACTION PRINT After the second begin-transaction:+CAST(@@TRANCOUNT AS char(1)) INSERT INTO TempTable VALUES(1,AAA) COMMIT TRANSACTION PRINT After the first commit-transaction:+CAST(@@TRANCOUNT AS char(1)) COMMIT TRANSACTION PRINT After the second commit-transaction:+ CAST(@@TRANCOUNT AS char(1)) GO 在上面的例子中,先在外层事务中定义了TempTable表,再开始内层事务,并在内层事务中使用INSERT语句向表中插入了一条记录;然后依次提交内层事务和外层事务。其中系统函数CAST的作用是进行类型转换,将系统函数@@TRANCOUNT返回的整型数值转变为类型为char(1)的字符型数据输出。 2)执行以上的语句,运行结果如下图所示。 从图中的执行结果中可以看出,每执行一次BEGIN TRANSACTION语句,便开始一个新事务,而且系统函数@@TRANCOUNT的值也会增加1。每执行一次COMMIT TRANSACTION语句,可以关闭一层事务,使系统函数@@TRANCOUNT的值减小1。当系统函数@@TRANCOUNT的值减为0时,最外层的事务也被关闭了。 3)使用以

文档评论(0)

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

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

1亿VIP精品文档

相关文档