我有一个存储过程,其中包含BEGIN TRANSACTION和COMMIT TRANSACTION语句。事务中有一个带有(XLOCK, ROWLOCK)选项的select查询。
如果提供了超出范围的值,一些计算可能导致算术溢出错误,从而导致事务失败。在任何插入/更新语句之前都会发生此错误。
我的问题是,我应该将事务包装在TRY/CATCH中并回滚,还是这确实不需要,如果事务失败,所有锁都会自动释放?我唯一的担忧是,如果事务失败,SQL可能不会释放事务的所有锁。
谢谢,
汤姆
如果提供了超出范围的值,一些计算可能导致算术溢出错误,从而导致事务失败。在任何插入/更新语句之前都会发生此错误。
我的问题是,我应该将事务包装在TRY/CATCH中并回滚,还是这确实不需要,如果事务失败,所有锁都会自动释放?我唯一的担忧是,如果事务失败,SQL可能不会释放事务的所有锁。
谢谢,
汤姆