ROLLBACK TRANSACTION请求没有相应的BEGIN TRANSACTION,但仍收到错误

问题描述

简单查询: 在UPDATE之前,EffectiveStartDt的值为NULL 在UPDATE和ROLLBACK之后,我希望它返回NULL

begin tran t1
update MasterPayor 
set EffectiveStartDt = '2020-09-17' 
where MasterPayorId = 1
commit

rollback tran t1

我已经定义了交易,但是仍然出现回滚错误

解决方法

COMMIT会将更新提交到数据库,并清除以匹配的BEGIN TRAN开始的事务,因此在尝试回滚时出错。如果要回滚,请使用ROLLBACK而不使用COMMIT:

begin tran t1
update MasterPayor 
set EffectiveStartDt = '2020-09-17' 
where MasterPayorId = 1

rollback tran t1