第7章事务、存储过程、触发器和游标.ppt

第7章事务、存储过程、触发器和游标.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 事务、存储过程、触发器和游标 7.1 事 务 7.2 存储过程 7.3 触发器及其用途 7.4 游标 7.1 事 务 1、事务的概念 事务是一个用户定义的完整的工作单元,一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。 2、事务的特性 原子性:事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一事务的执行不能被其它事务干扰 持续性(永久性):指事务一旦提交,则其对数据库中数据的改变就应该是永久的 3、事务的分类 SQL Server 的事务模式可分为显式事务、隐式事务和自动事务三种。 1) 显式事务 显式事务是指由用户执行T-sql事务语句而定义的事务,这类事务又称做用户定义事务。定义事务的语句包括: BEGIN TRANSACTION:标识一个事务的开始,即启动事务。 COMMIT TRANSACTION、COMMIT WORK:标识一个事务的结束,事务内所修改的数据被永久保存到数据库中。 ROLLBACK TRANSACTION、ROLLBACK WORK:标识一个事务的结束,说明事务执行过程中遇到错误,事务内所修改的数据被回滚到事务执行前的状态。 2) 隐式事务 在隐式事务模式下,在当前事务提交或回滚后,SQL Server自动开始下一个事务。所以,隐式事务不需要使用BEGIN TRANSACTION语句启动事务,而只需要用户使用ROLLBACK TRANSACTION、ROLLBACK WORK、COMMIT TRANSACTION、COMMIT WORK等语句提交或回滚事务。在提交或回滚后,SQL Server自动开始下一个事务。 执行SET IMPLICIT_TRANSACTIONS ON语句可使SQL Server进入隐式事务模式。在隐式事务模式下,当执行下面任意一个语句时,可使SQL Server重新启动一个事务: 所有CREATE语句 ALTER TABLE 所有DROP语句 TRUNCATE TABLE GRANT REVOKE INSERT UPDATE DELETE SELECT OPEN FETCH 需要关闭隐式事务模式时,调用SET语句关闭IMPLICIT_TRANSACTIONS 连接选项即可。 3) 自动事务模式 在自动事务模式下,当一个语句被成功执行后,它被自动提交,而当它执行过程中产生错误时,被自动回滚。自动事务模式是SQL Server的默认事务管理模式,当与SQL Server建立连接后,直接进入自动事务模式,直到使用BEGIN TRANSACTION语句开始一个显式事务,或者打开IMPLICIT_TRANSACTIONS 连接选项进入隐式事务模式为止。 而当显式事务被提交或IMPLICIT_TRANSACTIONS 被关闭后,SQL Server又进入自动事务管理模式。 示例: BEGIN TRAN demo SELECT * FROM Student INSERT INTO Student VALUES(‘9711112’,’张三’, … ) SELECT * FROM Student ROLLBACK -- 回滚整个事务 或: COMMIT -- 提交事务 下面例子说明自动事务模式下各语句的执行情况和SQL Server对批的处理: --SQL Server处于自动事务管理模式 Use pubs Go Create table TB_transaction1 (col1 INT PRIMARY KEY, col2 datetime) Go INSERT TB_transaction1 VALUES(1,GETDATE()) INSERT TB_transaction1 VALUES(1,GETDATE())--违反约束 Go SELECT times=1,* from TB_transaction1 Go Begin tran--进入显示事务模式 INSERT TB_transaction1 VALUES(2,GETDATE()) SELECT times=2,* from TB_transaction1 INSERT TB_transaction1 VALUE(3,GETDATE())--语法错误 Ro

文档评论(0)

清风老月 + 关注
官方认证
内容提供者

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

认证主体阳春市惠兴图文设计有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA53BEWA2D

1亿VIP精品文档

相关文档