【问题标题】:Unable to ROLLBACK the transaction in Sql Server 2008R2?无法在 Sql Server 2008R2 中回滚事务?
【发布时间】:2012-05-02 09:03:51
【问题描述】:

我的测试表有两列:

id         int not null  
somecolumn varchar(10))

现在看看我的查询:

USE TRY
BEGIN TRANSACTION T1
INSERT INTO Test VALUES(7,'hi');
GO
INSERT INTO Test VALUES(8,'hi','ABC');
GO
PRINT @@ERROR
if @@ERROR>0
    ROLLBACK TRANSACTION T1
ELSE
    COMMIT TRANSACTION T1

我知道我的第二个查询是错误的,所以我希望事务回滚,但它会插入第一个查询然后显示以下消息:

(1 row(s) affected)  
Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.
213

【问题讨论】:

标签: transactions sql-server-2008-r2 rollback


【解决方案1】:

正如 Benedikt 所述,我们不能在 BEGIN 和 END 之间使用 GO。如果您从上述事务中删除 GO,语句甚至会因为写入错误的插入语句而无法编译。 TRY..CATCH 也不起作用(如果您尝试在执行阶段捕获错误并回滚事务)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2010-12-17
    相关资源
    最近更新 更多