特殊事务--嵌套事务
嵌套事务是指一个事务创建在另一个事务里面,这种情况一般发生在一个存储过程里面有事务,然后又在有事务的语句中调用它。
例如,以下是一段嵌套事务的语句
BEGIN TRAN Tran1 GO BEGIN TRAN Nested Tran GO INSERT INTO Table1 DEFAULT Values GO 10 COMMIT TRAN Nested Tran SELECT * FROM Table1
如果运行此语句会看到10条记录插入到表Table1,当我使用以下语句回滚第一个事务的时候
ROLLBACK TRAN Tran1
这10条语句在表Table1中消失了。为什么会出现这样呢?
嵌套语句是基于最外层的事务动作,如果我回滚了最外层的事务,整个事务都会回滚,无论在里面是否提交.另一方面,如果我在最外层提交了事务,所有的事务也都会被提交。