存储过程中使用事务Transaction
类别:数据库 浏览量:671
时间:2014-8-9 存储过程中使用事务Transaction
存储过程中使用事务Transaction一、什么是事务(Transaction)
1、事务是恢复和并发控制的基本单位。 是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
2、事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
二、Begin Trans、Rollback Trans、Commit Trans方法
1、用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
2、事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
3、BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。
三、存储过程中使用事务Transaction实例
Create PROCEDURE [dbo].[tt2]
As
Begin
Begin Transaction
Update dbo.storeA Set Aid = 7 Where Aname ='N73'
Update dbo.storeA Set Aid = 9 Where Aname ='N97'
Insert Into dbo.storeA(Aid) Values('sdfs') --此语句将出错,LockTypeID为Int类型
Update dbo.storeA Set Aid = 8 Where Aname ='N95'
Commit Transaction
If(@@ERROR <> 0)
Rollback Transaction
End
Declare @id int
BEGIN TRANSACTION
Insert into xxxxxTable(f1,f2)values(@a,@b)
Select @id=@@identity
Insert into abcTable(ff1,ff2,ff3)values(@c,@id,@dd)
IF @@error <> 0 --发生错误
BEGIN
ROLLBACK TRANSACTION
RETURN 0
END
ELSE
BEGIN
COMMIT TRANSACTION
RETURN 1 --执行成功
END
您可能感兴趣
- sql怎么把表移到另一个数据库中(sql存储过程实例--动态根据表数据复制一个表的数据到另一个表)
- 如何获取存储过程返回值
- 使用VS调试存储过程
- sqlserver存储过程使用变量(浅析SQL Server的嵌套存储过程中使用同名的临时表怪像)
- sqlserver调试存储过程(sql server2008调试存储过程的完整步骤)
- Sql Server判断函数、存储过程等是否存在
- 存储过程中如何获取错误信息
- sqlserver 存储过程(SQL Server解析XML数据的方法详解)
- SQL SERVER存储过程中使用事务与try catch
- SQL数据库存储过程示例解析(SQL数据库存储过程示例解析)
- 如何排查mysql存储过程的问题(Mysql修改存储过程相关权限问题)
- mysql存储过程声明(MySQL存储过程的深入讲解in、out、inout)
- Sql Server常用系统存储过程
- sqlserver带参数的存储过程(SQL Server 日期和时间的内部存储过程)
- mysql中常用的三种存储引擎的区别(MySQL 存储过程的优缺点分析)
- 存储过程中如何使用事务
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
- 大女主 汤唯垂青电视圈,搭档朱亚文出演《大明皇妃孙若微传》(汤唯垂青电视圈)
- 红色代表什么(红色代表什么情感和含义)
热门推荐
- mysql索引失效原因(MySQL索引失效的几种情况详析)
- 怎么用php开发验证码(PHP简单验证码功能机制实例详解)
- docker容器关闭后怎么启动(docker批量启动关闭所有容器的操作)
- 进程和线程的区别有哪些
- js实时获取页面宽度(JavaScript获取网页的宽高及如何兼容详解)
- dedecms分页样式(dedecms列表页文章摘要字数的设置方法)
- linux系统显示时间的命令(详解Linux time 命令的使用)
- sql server设置标识列(Sql Server 如何去掉内容里面的Html标签)
- php建造者模式实例(PHP工厂模式、单例模式与注册树模式实例详解)
- php使用yield处理并发(Yii框架中使用PHPExcel的方法分析)