sql 事务和回滚
(1)
set ANSI_NULLS ON --见图1
set QUOTED_IDENTIFIER ON
go ALTER proc [dbo].[procname]
as
begin
begin transaction
DECLARE @myerror INT
set @myerror=0
delete from tbname
SET @myerror=@myerror+@@ERROR
insert into tbname2 select * from tbname where a>
SET @myerror=@myerror+@@ERROR IF @myerror>0
begin
rollback transaction
end
else
begin
commit transaction
end end
图1
当ANSI_NULLS置ON,比较要用is而不是=

set XACT_ABORT ON ---如果不设置该项为ON,在sql中默认为OFF,那么只只回滚产生错误的 Transact-SQL 语句;设为ON,回滚整个事务 begin tran t1 ---启动一个事务 update [water].[dbo].[ErrorInf] set ErrorMessage='test' where ID=6 insert into [water].[dbo].[ErrorInf]([ID],ErrorMessage,[Description])Values(1,'test1','test1') commit tran t1 ---提交事务
sql2005支持try
BEGIN TRY
BEGIN TRANSACTION
insert into dbo.area values('')
insert into dbo.area values('')
select 1/0
insert into dbo.area values('')
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY() RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
+
20160822
alter proc P002
(
@i2 varchar(20)
)
as
begin tran t001
begin try
insert into dbo.t_test4 (i2)values(@i2)
commit tran t001
end try begin catch
print convert(nvarchar, ERROR_NUMBER())+ ':返回错误号' print convert(nvarchar,ERROR_MESSAGE()) +':返回错误信息' print convert(nvarchar,ERROR_LINE()) +':返回错误所在的行' print convert(nvarchar,ERROR_PROCEDURE()) +':返回出现错误的存储过程或触发器的名称。如果在存储过程或触发器中未出现错误,该函数返回 NULL' print convert(nvarchar,ERROR_STATE()) +':返回状态' print convert(nvarchar,ERROR_SEVERITY()) +':返回严重性' rollback tran t001
end catch
sql 事务和回滚的更多相关文章
- MySql事务无法回滚的原因
使用MySQL时.假设发现事务无法回滚,但Hibernate.Spring.JDBC等配置又没有明显问题时.不要苦恼,先看看MySQL创建的表有没有问题.即表的类型. InnoDB和MyISAM是在使 ...
- Spring事务管理——回滚(rollback-for)控制
探讨Spring事务控制中,异常触发事务回滚原理.文章进行了6种情况下的Spring事务是否回滚. 以下代码都是基于Spring与Mybatis整合,使用Spring声明式事务配置事务方法. 1.不捕 ...
- 第二百八十六节,MySQL数据库-MySQL事务操作(回滚)
MySQL数据库-MySQL事务操作(回滚) 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 举例:有这样一张表 从表里可以看出张 ...
- spring boot开启事务管理,使用事务的回滚机制,使两条插入语句一致
spring boot 事务管理,使用事务的回滚机制 1:配置事务管理 在springboot 启动类中添加 @EnableTransactionManagement //开启事务管理 @Enable ...
- Spring事务为什么不会自动回滚?Spring事务怎样才会自动回滚?事务自动回滚条件及手动回滚
原文:https://blog.csdn.net/qq_32331073/article/details/76508147 更多Spring事务问题请访问链接:Spring事务回滚问题疑难详解 在此, ...
- flask-sqlalchemy、pytest 的单元测试和事务自动回滚
flask-sqlalchemy.pytest 的单元测试和事务自动回滚 使用 flask-sqlalchemy 做数据库时,单元测试可以帮助发现一些可能意想不到的问题,像 delete-cascad ...
- spring + myBatis 常见错误:注解事务不回滚
最近项目在用springMVC+spring+myBatis框架,在配置事务的时候发现一个事务不能回滚的问题. 刚开始配置如下:springMVC.xml配置内容: spring.xml配置内容 从上 ...
- 抛出自定义异常,spring AOP事务不回滚的解决方案
spring AOP 默认对RuntimeException()异常或是其子类进行事务回滚,也就是说 事务回滚:throw new RuntimeException("xxxxxxxxxxx ...
- spring + mybatis 注解式事务不回滚的原因分析 @Transactional
在一个项目中发现spring的事务无法回滚. DEBUG: org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.ses ...
随机推荐
- (转)javascript中 window.location= window.location;是什么意思
重载当前页面.但是,重载后,一些$_GET或者$_POST $_REQUEST 表单提交的数据会清空. 重新加载当前页面的资源,就是刷新本页面
- iOS 之 cocoapods安装与使用
我们都知道第三方库,一般使用cocoapods管理,cocoapods在我们IOS开发中有着很大的作用. 好了,现在看下它的安装步骤: 1.打开终端,输入 sudo gem install cocoa ...
- 使用Spring JDBCTemplate简化JDBC的操作
使用Spring JDBCTemplate简化JDBC的操作 接触过JAVA WEB开发的朋友肯定都知道Hibernate框架,虽然不否定它的强大之处,但个人对它一直无感,总感觉不够灵活,太过臃肿了. ...
- Cortex-M3寄存器等基础知识
1.寄存器 CM3拥有R0~R15通用寄存器和一些特殊功能寄存器 R0~R12这些通用寄存器,复位初始值都是不可预料的 2.CM3有R0到R15的通用寄存器组 注:绝大部分的16位thumb只能访问R ...
- (译+原)std::shared_ptr及std::unique_ptr使用数组
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5462363.html 参考网址: http://stackoverflow.com/questions ...
- Mysql开发技巧之删除重复数据
Mysql利用联表查询和分组来删除重复数据 //删除表中重复的id,保留最大的id mysql> select * from user; +----+------+ | id | name | ...
- Linq的基础2
var 构建匿名类型1 = from c in ctx.GetTable<Customers>() select new ...
- 字符串分割与数组的分割 split()VSsplice()&slice()
一.作用对象 1.split()方法是对字符串的操作:splice()和slice()是对数组的操作.slice()也可用于字符串. 二.参数 1.split(separator,howmany) 参 ...
- 基于jQuery UI的tabs选项卡美化
很多朋友对JS望而生畏,但听很多朋友说jQuery很简单,因此开始使用jQuery,使用之后发现,只会写简单的功能,复杂的功能还是不太会写或者总是担心自己写的有性能问题,对前端人员来说只能通过不断学习 ...
- C语言编译过程简介
刚开始接触编程的时候,只知道照书敲敲代码,一直都不知道为什么在windows平台下代码经过鼠标那样点击几下,程序的结果就会在那个黑色的屏幕上.现在找了个机会将C语言的编译原理做一下小小的总结,这样也能 ...