`
shirlly
  • 浏览: 1647750 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

SQL事务回滚的问题及其解决的方法

阅读更多
Begin Transaction:开始一个事务;
Commit Transaction:提交事务;
Rollback Transaction:回滚事务。

其中Commit Transaction 与Rollback Transaction 都必须有对应的Begin Transaction 才能正确被执行。

如:

Begin Tran
……
Rollback Tran
Commit Tran

以上事务只执行了回滚操作。执行Commit Tran系统会返回3902错误,即@@Error=3902,COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

Begin Tran
……
Commit Tran
Rollback Tran

以上事务员执行了提交事务操作。执行Rollback Tran系统会返回3903错误,即@@Error=3903,ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

实例:使用@@Error返回值来控制回滚

设有表a,有字段num (int),name (varchar(20));表b,有字段num (int),Add (varchar(50))。以下是一个存储过程,使用了@@Error的返回值来控件事件回滚:

CREATE PROCEDURE [dbo].[TranTest] 
@num int,@name varchar(20),@Add varchar(20)
AS
DECLARE @ErrorA int,@ErrorB int
begin transaction aa
insert into a values(@num,@name)
Set @ErrorA = @@error
insert into b values(@num,@Add)
Set @ErrorB = @@error
if @ErrorA>0 or @ErrorB>0
begin
Rollback transaction aa
end
else
commit transaction aa
GO


转自:
http://blog.csdn.net/dezwen/archive/2006/03/08/618844.aspx
分享到:
评论

相关推荐

    SQL写了回滚无效 回滚没用

    在探讨“SQL写了回滚无效,回滚没用”这一主题时,我们首先需要理解SQL事务的基本概念及其在数据操作中的重要性。SQL事务是指作为单一工作单元执行的一系列SQL语句,它确保了数据库操作的原子性、一致性、隔离性和...

    sql2005使用中遇到的问题解决方法

    本文将根据提供的资源,详细探讨一些常见问题及其解决方法。 一、安装与配置问题 在安装SQL Server 2005时,可能出现兼容性、磁盘空间不足、依赖组件缺失等问题。解决方法包括检查系统环境是否满足最低需求,确保...

    SQL语句(增、删、改、查)及相关问题

    **注意**:TRUNCATE TABLE不能被事务回滚,且不会触发DELETE触发器。 #### 四、更新(Update) 更新操作用于修改表中的现有记录。 ```sql UPDATE 表名 SET 列名 = 新值 [WHERE 条件表达式]; ``` 示例: ```sql ...

    sql数据库死锁查询工具

    - 事务回滚:数据库管理系统会自动检测到死锁,并选择一个事务进行回滚以打破死锁。 - 手动干预:管理员可以通过终止特定事务、调整事务的执行顺序或优化SQL语句来避免死锁。 - 设置超时:为事务设置超时限制,超时...

    oracle 回滚段探究

    #### 七、常见问题及其解决方法 1. **回滚段空间不足**:增加UNDO表空间的大小或优化应用程序以减少回滚段的使用。 2. **回滚段争用**:通过增加回滚段的数量或优化事务处理逻辑来减少争用情况。 3. **性能下降...

    SQL Server 的事务和锁

    SQL Server通过死锁检测机制来解决这个问题,一旦发现死锁,会选择一个事务进行回滚以打破死锁。通过优化事务设计、合理安排资源请求顺序以及设置合适的事务隔离级别可以减少死锁的发生。 **事务和锁的应用** 在...

    多行SQL导入ACCESS事务的代码写法

    ### 多行SQL导入ACCESS事务的代码写法 #### 知识点概述 本文档将详细介绍如何使用ADO(ActiveX Data Objects)技术结合事务处理功能,实现多行数据的高效导入到Microsoft Access数据库中的方法。在开发过程中,...

    MySQL学习笔记常见问题以及解决方法

    以下是一些常见的问题及其解决方法。 1. **安装与配置**: - 问题:安装过程中出现错误或无法启动MySQL服务。 - 解决方法:检查系统环境,确保安装路径无中文字符,配置文件(my.ini或my.cnf)设置正确,如端口号...

    解决sql死锁问题

    #### 四、SQL死锁的解决方法 1. **手工解除死锁**: ```sql -- 根据查询结果,手动解除死锁 ALTER SYSTEM KILL SESSION 'SID, SERIAL#'; ``` - **解释**:此命令允许管理员根据查询到的会话ID(SID)和序列号...

    oracle sql项目开发中常见问题总结

    在Oracle SQL项目开发中,经常会遇到各种问题,以下是一些常见的问题及其解决方案: 1. **查询包含特殊字符的数据** 当需要查询包含特殊字符(如%或_)的数据时,可以使用`LIKE`关键字配合`ESCAPE`来指定特殊字符...

    浅析SQL SERVER死锁产生的原因及解决.pdf

    在探讨SQL Server数据库中死锁产生的原因及其解决方法之前,首先要了解死锁的基本概念。死锁是指在多线程系统中,两个或多个线程之间形成了循环依赖关系,导致它们都在等待对方释放资源,从而都无法继续执行下去的一...

    sqlserver中事务

    为了解决以上并发问题,SQL Server提供了多种锁机制和隔离级别,如行级锁、共享锁、排他锁等,以及不同的隔离级别(如读未提交、读已提交、可重复读、序列化),通过调整事务的隔离级别和锁策略,可以有效地控制并发...

    SQL Server 2000 日志浏览器

    通过理解和掌握SQL Server 2000日志浏览器,数据库管理员可以更有效地管理和维护数据库,及时发现并解决问题,提高系统的稳定性和安全性。在实际工作中,配合其他数据库管理工具和策略,可以形成一套完整的数据库...

    SQL server中的封锁阻塞及解决办法.pdf

    《SQL Server中的封锁阻塞及解决办法》这篇文章探讨了在SQL Server数据库管理系统中,由于并发操作引发的封锁和阻塞问题及其解决方案。SQL Server利用事务和锁机制来保证数据库的安全性和完整性,但在高并发环境下,...

    oracle 常用sql语句和常见问题

    本资料集主要涵盖了Oracle中的常用SQL语句以及在实际应用中可能遇到的常见问题及其解决策略。 1. **SQL基本操作**: - **SELECT语句**:用于从表中选择数据。例如,`SELECT * FROM table_name;` 将获取表中的所有...

    c/c++使用SQL很方便的控件SQL_API

    本文将详细介绍SQL_API控件的使用方法及其在C/C++中的应用。 SQL_API是一个库,为C/C++开发者提供了SQL接口,使得他们能够轻松地集成数据库功能到自己的应用程序中。这个库通常包括预编译的库文件和头文件,开发者...

    oracle常见错误及解决方法

    14. ORA-00061, ORA-00062: 事务回滚和DML锁问题 这些错误涉及到事务管理和锁定冲突,可能需要重新组织事务或释放锁定。 15. ORA-00063, ORA-00064, ORA-00065, ORA-00066, ORA-00067, ORA-00068, ORA-00069: 参数...

    数据库锁表问题解决方法

    ### 数据库锁表问题解决方法 #### 一、问题背景 在进行数据库操作时,比如对数据表进行插入(INSERT)、更新(UPDATE)或删除(DELETE)操作,或者是添加主键(PRIMARY KEY)或索引(INDEX)时,可能会遇到ORA-...

    SQL server 2008 阻塞查询与处理

    3. **死锁**:两个或多个事务互相等待对方释放资源的情况,最终会导致其中一个或多个事务回滚。 4. **长时间运行的事务**:长时间不提交的事务会持续持有锁,导致其他事务被阻塞。 5. **资源竞争**:例如多个事务...

    SQL3保存点和部分回滚的设计和实现 (1).pdf

    2. 为解决死锁提供了一种有效而廉价的方式(不必总是回滚整个事务)。 3. 可用于保证SQL3标准中要求的语句原子性,从而达到保证触发动作的原子性和倒程的原子性。 4. 系统自动在复杂查询中设置保存点,在事务之闻...

Global site tag (gtag.js) - Google Analytics