在调用ROLLBACK TRANSACTION后,执行Query继续运行

时间:2013-03-16 04:44:40

标签: sql database transactions sql-server-2012

这是我试过的查询。我正在测试ROLLBACK,因为我们需要在作业中进行。

BEGIN TRANSACTION;

declare @var bit;
set @var = 0;

BEGIN TRY
    INSERT INTO Orders(ShippingAddress, BillingAddress, Status, Date, ID, CustomerID, Total, BillingInfo) 
    VALUES('10 King Road', '10 King Road', 'Pending', '2013-03-15 07:58:55.760', 16, 1, 145.95, 'Put it on my doorstep please.');
END TRY
BEGIN CATCH
    IF @var > 0
    ROLLBACK TRANSACTION;
END CATCH;

IF @var > 0
    COMMIT TRANSACTION;

成功运行后,我尝试执行SELECT * FROM Orders,现在SQL Server只是尝试永远运行ExecuteQuery ...我的伙伴也遇到了同样的麻烦,但我们所有的其他表都工作得很好。任何人都知道这可能是什么原因?我正在使用Microsoft SQL Server 2012.谢谢

1 个答案:

答案 0 :(得分:1)

什么是@var,什么时候会是> 0.如果@var未更改为1已开始TRANSACTION从未COMMITROLLBACK。因此,表将被锁定,直到TRANSACTION结束。