首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在新查询窗口中回滚事务

如何在新查询窗口中回滚事务
EN

Stack Overflow用户
提问于 2015-07-06 07:11:30
回答 2查看 714关注 0票数 0

嗨,我有一个sp,在那里我用的是尝试捕捉和事务。下面是代码

代码语言:javascript
复制
USE [Securtimeweb2.1]
GO
/****** Object:  StoredProcedure [dbo].[UpdateCompany]    Script Date: 7/6/2015 12:14:27 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[UpdateCompany]
(
	
	@CompanyCode varchar(max),
	@NewCompCode varchar(max)=null,
	@TRANSVAL VARCHAR(MAX)
)
as	
BEGIN
	BEGIN TRY
	
	BEGIN TRAN @TRANSVAL
		update BranchMaster set CompanyCode=@NewCompCode Where CompanyCode=@CompanyCode
		COMMIT TRAN @TRANSVAL
		END TRY
		BEGIN CATCH
		 SELECT ERROR_MESSAGE() AS strMessage
         ROLLBACK TRAN @TRANSVAL
		END CATCH
	
	
END

然后,我使用此代码在另一个查询窗口中运行这个sp。

代码语言:javascript
复制
EXEC UpdateCompany '002','003','TRAN1'

因此,在彼此使用此查询窗口后,我将尝试回滚以下事务:

代码语言:javascript
复制
DECLARE @TRAN VARCHAR(MAX)='TRAN1'
BEGIN TRAN @TRAN
ROLLBACK TRAN @TRAN

在这里,我们可以看到,我给了一些事务的名称,并试图用相同的名称回滚,但是它没有回滚。我在这里做错什么了吗??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-06 07:21:50

使用此链接了解事务的工作方式。

代码语言:javascript
复制
http://www.sqlservercurry.com/2011/01/rollback-transaction-in-sql-server.html
票数 0
EN

Stack Overflow用户

发布于 2015-07-06 07:29:20

我用的是以下标准,也许能帮上忙:

代码语言:javascript
复制
BEGIN TRAN
BEGIN TRY
    --YOUR SQL STATEMENTS 
END TRY
BEGIN CATCH
    SELECT ERROR_MESSAGE() AS [STATUS]
    ROLLBACK TRAN
END CATCH
IF @@TRANCOUNT > 0
BEGIN
    COMMIT TRAN
    SELECT 'SUCCESS' AS [STATUS]
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31239700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档