如果我在SET XACT_ABORT ON
语句中使用CREATE PROCEDURE
,我是否必须将所有语句包装在显式事务语句中:BEGIN TRANSACTION
和COMMIT
?
或者SET XACT_ABORT ON
在执行错误的情况下是否终止过程执行而不考虑这些?
答案 0 :(得分:1)
XACT_ABORT通常用于某人在存储过程中对事务进行编码时,可能他们应该将此责任留给调用模块。
当出现问题时,交易可以保持打开状态,而来电者无视该事务。将XACT_ABORT设置为ON意味着在发生故障时事务不会保持打开状态。
使用事务时,您应该始终寻求处理SQL中的每个可能的错误并相应地处理事务。更好的是,完全从SQL中剥离事务,并依赖于调用模块。