存储过程中的事务回滚链接

Transaction rollback chaining in stored procedure

比如我有2个存储过程

CREATE PROCEDURE [dbo].[sProcedure1]
AS
BEGIN TRY
    BEGIN TRANSACTION

    EXEC sProcedure2
    SELECT * INTO Table3 FROM Table2

    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION
END CATCH


CREATE PROCEDURE [dbo].[sProcedure2]
AS
BEGIN TRY
    BEGIN TRANSACTION

    SELECT * INTO Table2 FROM Table1

    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION
END CATCH

如果 sProcedure2 将成功执行但 sProcedure1 将在 SELECT * INTO Table3 FROM Table2 上出错怎么办?

Table2 是否会填充数据或从 sProcedure1 回滚将填充到 sProcedure2?

谢谢

根据我的说法,如果存储过程 1 失败,一切都应该回滚,并且您不会在 Table 2 和 Table 3 中插入​​任何数据。