sqlserver 事务嵌套
参考 https://www.cnblogs.com/JentleWang/p/3654603.html
https://blog.csdn.net/tuzhen007/article/details/11183961
create proc proc_example
as
begin
--声明变量,存放当前已开启的事务数
declare @exist_trancount int
select @exist_trancount = @@trancount if @exist_trancount > 0
--创建事务保存点
save transaction tran_proc
else
--开启新事务
begin transaction tran_proc /*
存储过程业务处理代码
·········
*/
if @@error<>0
goto error if @exist_trancount = 0
--提交事务
commit tran tran_proc
return 1
error:
--回滚事务或者事务保存点
--rollback transaction tran_proc
if @exist_trancount > 0
begin
rollback transaction tran_proc
end
else
begin
rollback tran
end
return -1
end
- 提交的事务不能撤销或回滚。
- 当不存在打开的事务时,@@trancount 等于 0。
- 执行 begin tran [tranName]语句将 @@trancount 增加 1。
- 执行commit tran [tranName]语句将 @@trancount 减小 1。
- 执行 rollback tran 会回滚整个事务并设置@@trancount 为 0。
sqlserver 事务嵌套的更多相关文章
- SQLServer多事务——事务嵌套
在ERP中,偶尔会有存储过程里面继续调用存储过程的情况 其中更有一些特殊的存储过程分别都使用了存储过程,大致可以分为下面几种情况: 1.平行事务,在多个事务中,任意一个成功则提交数据库,失败则各自RO ...
- SQLServer 存储过程嵌套事务处理
原文:SQLServer 存储过程嵌套事务处理 某个存储过程可能被单独调用,也可能由其他存储过程嵌套调用,则可能会发生嵌套事务的情形. 下面是一种解决存储过程嵌套调用的通用代码,在不能确定存储过程是否 ...
- EF事务嵌套
EF中采用的是数据上下文DbContext,当针对数据库的所有操作共用一个数据上下文的时候,会使用同一个连接对象,因此连接打开一次,最后Save的时候关闭连接,避免了频繁的创建连接对象打开关闭,这在一 ...
- sqlserver 事务日志过大 收缩方法解决方案
sqlserver 事务日志过大,可能会导致备份失败或者数据库出现异常,所以要定期清除sqlserver 事务日志 建议:为了防止日志文件无限扩大,可以对日志文件作一些限制. 清除sqlserver事 ...
- (转)解释一下SQLSERVER事务日志记录
本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 解释一下SQLSERVER事务日志记录 大家知道在完整恢 ...
- Spring Trasnaction管理(3)- 事务嵌套
问题导读 Spring 如何管理嵌套的事务 Spring事务传播机制 Nested 和 RequireNew 有何区别 事务传播机制 事务的传播机制应该都比较熟悉 在日常开发中会遇到需要事务嵌套的情况 ...
- 解释一下SQLSERVER事务日志记录
解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...
- MES项目中出现的一个事务嵌套的使用场景
昨天在MES项目中,需要在业务逻辑的几个关键点记录错误信息,需要把错误信息写入数据表. 但是由于整个业务逻辑都是包在一个事务模板里面的 比如这样的: WhhTransactionTemplate tr ...
- MySql中的事务嵌套
1.Mysql中的事务必须是InnoDB.Berkeley DB引擎,myisam不支持. 2.Mysql是不支持嵌套事务的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务. 3.My ...
随机推荐
- IntelliJ IDEA tomcat 热部署
1.点击idea中tomcat设置 2.点击Deployment查看Deploy at the server startup 中tomcat运行的包是 xxxx:war 还是其他,如果是xxx:war ...
- golang判断文件/文件夹是否存在
使用os包,os.stat返回err==nil,说明存在: os.IsNotExist(err)为true,说明不存在:否则不确定是否存在 func DelJar(fileName string) e ...
- linux中根据进程的PID值来查找执行文件的及其路径
lsof -p PID http://blog.csdn.net/great_smile/article/details/50114133
- WDA-4-ALV按钮&ICON
1.ICON图标 AccessControlledArea (14x14) Activate (14x14) Active (14x14) AdaptationTechnical (14x14) Ad ...
- 飞利浦 PHILIPS 电动牙刷HX6730 拆解
今日,一直比较喜欢用的电动牙刷,飞利浦HX6730坏掉了,初步感觉考虑飞利浦的保修,但是发现发票找不到了.飞利浦的客服也说,电动牙刷的两年保修依据分别是:1.发票开据日期:2.在无发票的情况下,看底部 ...
- 1047A_Little C Loves 3 I(构造)
A. Little C Loves 3 I time limit per test 1 second memory limit per test 256 megabytes input standar ...
- docker-compose初试及命令基础
转自:https://www.cnblogs.com/jsonhc/p/7811929.html 以一个简单的lnmp.yaml的配置文件进行讲解docker-compose命令的基础讲解,熟练掌握命 ...
- python中函数基础
函数 什么是函数? 函数分为内置函数和自定义函数 定义:在程序中具备某一功能的工具.在使用之前需准备该工具(函数的定义),遇到应用场景拿来就用(后引用). 为什么要用函数? 1.代码冗余 程序组织结构 ...
- Linux命令:索引
目录 A B C D E F G H I jobs J K L M N nohup O P Q R S T trU V W X Y Z A alias B C cd D dirs E F G ...
- [Shell]Bash基本功能:输入输出重定向
/*----------------------------------------------------------------------------------------------- @黑 ...