存储过程中的事务回滚链接
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 中插入任何数据。
比如我有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 中插入任何数据。