一个大的事务ALL里有 2个小事务A和B。
就是这样:事务ALL开始
事务A开始
事务A结束
事务B开始
事务B结束事务ALL结束事务A执行完毕后,事务A→GetObjectContext.SetComplete,事务中有Insert into DB的操作。事务B执行过程后,出现错误,这个时候,跳转到事务ALL,事务ALL执行GetObjectContext.SetAbort操作。问题:
已经执行了SetComplete操作的事务A,在事务ALL执行SetAbort操作的时候,是否也成功rollback了?
就是这样:事务ALL开始
事务A开始
事务A结束
事务B开始
事务B结束事务ALL结束事务A执行完毕后,事务A→GetObjectContext.SetComplete,事务中有Insert into DB的操作。事务B执行过程后,出现错误,这个时候,跳转到事务ALL,事务ALL执行GetObjectContext.SetAbort操作。问题:
已经执行了SetComplete操作的事务A,在事务ALL执行SetAbort操作的时候,是否也成功rollback了?
Microsoft® SQL Server™ 忽略提交内部事务。根据最外部事务结束时采取的操作,将提交或者回滚事务。如果提交外部事务,则内层嵌套的事务也会提交。如果回滚外部事务,则不论此前是否单独提交过内层事务,所有内层事务都将回滚。