新SQL Server 2008数据库开发经典案例教程 电子教案习题解答等 吕玉桂 电子教案 第11章数据库事务.pptVIP

  • 1
  • 0
  • 约4.66千字
  • 约 22页
  • 2016-10-26 发布于广东
  • 举报

新SQL Server 2008数据库开发经典案例教程 电子教案习题解答等 吕玉桂 电子教案 第11章数据库事务.ppt

* * * 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 第11章 数据库事务 本章目标 理解事务的概念 理解事务的特性、分类 在SQLServer中启动、提交和回滚事务 掌握事务的隔离级别 为什么需要事务 事务能确保把对多个数据操作作为一个单元来处理 例如:银行转帐 问题:假设张三的银行卡有2000元,李四的卡有1000元,共计3000元。现在张三要转1000元给李四,则要更新张三的帐户,减少余额1000元,更新李四帐户余额,增加1000元。如果整个流程没有出错则最后张三余额1000元,李四2000元,共计3000元。数据和转帐之前是一致的,假设在减少了张三的余额1000后,系统掉电或者出现意外李四的帐户还没完成更新。则最终的数据2000元,那怎么解决? 事务的概念及特性 事务提供了一种机制、是一个操作序列,它包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或撤消操作请求 事务是作为单个逻辑工作单元执行的一系列操作 事务的四个特性: 原子性(Atomicity):事务能确保把对多个数据修改作为一个单元来处理,也就是原子操作。 一致性(Consistency):当事务完成时,数据必须处于一致状态 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。这表明事务必须是独立的,它不应以任何方式依赖或影响其他事务 持久性(Durability):当事务完成之后,它对于系统的影响是永久性的。 事务的分类 事务分类 显式事务 隐性事务 自动提交事务 显式事务:显式事务是显式地定义其开始和结束的事务 BEGIN TRANSACTION …数据库操作如:插入记录 …数据库操作如:删除记录 COMMIT TRANSACTION 事务的分类 隐性事务:通过Transact-SQL的 SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开。 SET IMPLICIT_TRANSACTIONS ON GO /*第一次执行Insert 语句的时候将自动启动一个隐性事务*/ INSERT INTO ImpTran VALUES(1,aaa) INSERT INTO ImpTran VALUES(2,bbb) GO /*提交第一个事务*/ COMMIT TRANSACTION GO /*执行SELECT语句将启动第二个隐性事务*/ SELECT COUNT(*) FROM ImpTran GO INSERT INTO ImpTran VALUES(3,ccc) GO SELECT * FROM ImpTran GO /*提交第二个事务*/ COMMIT TRANSACTION GO SET IMPLICIT_TRANSACTIONS OFF GO 事务的分类 自动提交事务:所有Transact-SQL语句在完成时,都会提交或回滚。如果一条语句成功完成,则将其提交,如果遇到任何错误,则将其回滚; 默认操作模式 用T-SQL表示事务 Transact-SQL使用下列语句来管理事务 开始事务:BEGIN TRANSACTION 提交事务:COMMIT TRANSACTION 回滚(撤消)事务:ROLLBACK TRANSACTION 下列变量在事务处理中非常有用。 @@ERROR @@TRANCOUNT 事务的应用 示例:客户购买图书 USE BookShopDb GO --一个客户在销售员编号为的用户处购买了三种书,生成销售记录--- SET NOCOUNT ON --不显示受影响的行数信息 GO BEGIN TRANSACTION --开始事务 DECLARE @err INT --保存错误编号 PRINT 客户开始买书,事务开始 SET @err=0 --插入销售主表SalesMaster INSERT INTO SalesMaster VALUES(GETDATE(),001) --声明局部变量保存SalesMasterID SET @err=@err+@@ERROR DECLARE @SalesMasterID INT --获取最新的SalesMasterID SELECT @SalesMasterID=@@IDENTITY --购买三本书 INSERT INTO SalesDetails  VALUES(@SalesMasterID,B0001,1,0.9,45) SET @err=@err+@@ERROR INSERT INTO SalesDetails  VALUES

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档