当前位置:  开发笔记 > 数据库 > 正文

Sql Server中的嵌套事务

如何解决《SqlServer中的嵌套事务》经验,为你挑选了2个好方法。

想象一下以下场景:

我正在使用SQL Server 2005.我有一个事务,在其他SQL语句中调用一个内部也有事务的存储过程.外部事务有时会失败,并在成功调用和提交存储过程后回滚.

我的问题是,存储过程的事务是否也回滚了?



1> Matthew Farw..:

对于嵌套事务,提交不会将任何更改写入磁盘,但顶级事务除外.然而,无论事务的级别如何,回滚都会起作用,所以是的,它将回滚内部事务.


回滚将回滚-all-事务,而不仅仅是前一个事务.EG:http://www.emoreau.com/Entries/Articles/2011/02/EricMoreau1.gif
@ Pure.Krome是正确的.嵌套交易将*不*做你想要的.请参阅[SQL Server神话一天系列](http://www.sqlskills.com/blogs/paul/post/A-SQL-Server-DBA-myth-a-day-%282630%29-nested-transactions-是-real.aspx)

2> Timbo..:

绝对是的,顶级事务将拥有所有数据更改,直到它被提交或回滚.

但是,我鼓励您仔细考虑交易模型.您的系统中存在的此类情况越多,您对锁定问题的暴露程度就越高.此外,该过程的计算费用也增加了.

值得注意的是,在合理化SQL时,我发现事务已经在不需要的地方实现了.我鼓励您(以及任何处理交易的人)仔细考虑您在每种情况下使用它们的原因以及未实施交易会发生什么.只是我的2c价值!

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有