我有一个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;
答案 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
构造,我发现了这个,这可以更好地解释这个过程。