存储过程中使用事务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
您可能感兴趣
- sqlserver存储删除过程(Sql中存储过程的定义、修改和删除操作)
- 怎么写存储过程sql server(SqlServer存储过程实现及拼接sql的注意点)
- SQL Server中SQL语句或者存储过程的最大长度
- sqlserver存储过程参数默认值(sql server使用临时存储过程实现使用参数添加文件组脚本复用)
- sqlserver查看表和存储过程的架构(SQL Server 远程更新目标表数据的存储过程)
- SQL SERVER中调用存储过程
- Sql Server常用系统存储过程
- 使用VS调试存储过程
- SQL SERVER获取指定数据库中所有存储过程的参数
- mybatis执行sql源码解析(mybatis调用sqlserver存储过程返回结果集的方法)
- sqlserver存储过程使用变量(浅析SQL Server的嵌套存储过程中使用同名的临时表怪像)
- Sql Server判断函数、存储过程等是否存在
- mysql存储过程定义表(MySQL存储过程的创建、调用与管理详解)
- mysql存储过程声明(MySQL存储过程的深入讲解in、out、inout)
- sqlserver创建带参数的存储过程(SQLServer存储过程实现单条件分页)
- 如何排查mysql存储过程的问题(Mysql修改存储过程相关权限问题)
- 写杜鹃的诗句(盘点写杜鹃的诗句)
- 凉性食物吃多了会影响月经吗(多吃凉性食物会不会影响月经)
- 五彩苏的养殖方法和注意事项(如何养殖五彩苏)
- 荷兰豆猪骨汤怎么做(荷兰豆猪骨汤的烹饪方法)
- 当归鲫鱼汤怎么做(当归鲫鱼汤的烹饪方法)
- 汽油的密度是多少(请看答案回复)
热门推荐
- php协议使用教程学习(php中的钩子理解及应用实例分析)
- python零基础入门详细教程(Python零基础入门学习之输入与输出)
- mysql中数据类型的学习体会(MySQL 实现lastInfdexOf的功能案例)
- extjs card卡片式布局
- python中列表remove的用法汇总(对python_discover方法遍历所有执行的用例详解)
- php 上传图片如何压缩(PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例)
- pandas字符串和数字(使用pandas把某一列的字符值转换为数字的实例)
- 服务器租用教程(如何选择租用网站服务器?)
- asp.net中使用ueditor
- python编写程序读写数据库(详解js文件通过python访问数据库方法)