想象一下以下场景:
我正在使用SQL Server 2005.我有一个事务,在其他SQL语句中调用一个内部也有事务的存储过程.外部事务有时会失败,并在成功调用和提交存储过程后回滚.
我的问题是,存储过程的事务是否也回滚了?
对于嵌套事务,提交不会将任何更改写入磁盘,但顶级事务除外.然而,无论事务的级别如何,回滚都会起作用,所以是的,它将回滚内部事务.
绝对是的,顶级事务将拥有所有数据更改,直到它被提交或回滚.
但是,我鼓励您仔细考虑交易模型.您的系统中存在的此类情况越多,您对锁定问题的暴露程度就越高.此外,该过程的计算费用也增加了.
值得注意的是,在合理化SQL时,我发现事务已经在不需要的地方实现了.我鼓励您(以及任何处理交易的人)仔细考虑您在每种情况下使用它们的原因以及未实施交易会发生什么.只是我的2c价值!