特殊事务--嵌套事务

嵌套事务是指一个事务创建在另一个事务里面,这种情况一般发生在一个存储过程里面有事务,然后又在有事务的语句中调用它。

例如,以下是一段嵌套事务的语句

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中消失了。为什么会出现这样呢?

嵌套语句是基于最外层的事务动作,如果我回滚了最外层的事务,整个事务都会回滚,无论在里面是否提交.另一方面,如果我在最外层提交了事务,所有的事务也都会被提交。

posted @ 2015-10-09 19:12  BITALKER  阅读(500)  评论(0编辑  收藏  举报