SQL Server事务未提交

时间:2017-11-14 11:22:48

标签: sql-server tsql transactions commit

我有一个SQL Server事务,它向表中添加一个列,然后它向该列添加一些值。它运行完美,但它没有提交更改。

我使用@@trancount进行了检查,运行查询后它的值为1。

交易有什么问题?

谢谢!

BEGIN TRANSACTION
    ALTER TABLE Table
        ADD ColumnName VARCHAR(200) NULL;
    GO

    BEGIN TRY
        UPDATE ColumnName 
        SET ColumnName = 'some value'

        COMMIT TRANSACTION
    END TRY
    BEGIN CATCH
        ROLLBACK TRANSACTION;
    END CATCH;

2 个答案:

答案 0 :(得分:1)

您需要更改update以告知要更新的表格。

 UPDATE Table SET ColumnName = 'some value'

答案 1 :(得分:0)

如果你这样做,它会起作用。如果在运行时发生错误,XACT_ABORT将自动回滚事务。我在过去使用TRY...CATCH时遇到了问题,在这种情况下,它似乎没有必要。

SET XACT_ABORT ON
BEGIN TRANSACTION
    ALTER TABLE Table
        ADD ColumnName VARCHAR(200) NULL;

    UPDATE Table 
        SET ColumnName = 'some value';

    COMMIT TRANSACTION;

SET XACT_ABORT OFF

<强>更新

如果您仍想使用TRY...CATCH构造,我发现了这个,这可以更好地解释这个过程。

Try...Catch inside Transactions