gpt4 book ai didi

sql-server - 存储过程中适当范围的事务

转载 作者:行者123 更新时间:2023-12-03 03:35:25 26 4
gpt4 key购买 nike

假设我有一个存储过程来管理自己的事务

CREATE PROCEDURE theProc
AS
BEGIN

BEGIN TRANSACTION

-- do some stuff

IF @ThereIsAProblem
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END

如果我从现有事务中调用此过程,该过程可以回滚外部事务。

BEGIN TRANSACTION
EXEC theProc
COMMIT TRANSACTION

如何在存储过程中正确确定事务范围,以便存储过程不会回滚外部事务?

最佳答案

执行此操作的语法可能因数据库而异。但在 Transact-SQL 中,您要做的是检查 @@TRANCOUNT 来查看您是否处于事务中。如果你是,那么你想创建一个保存点,最后你可以直接通过函数的末尾(相信稍后会发生提交或回滚),或者回滚到你的保存点。

请参阅 Microsoft 关于 savepoints 的文档了解更多。

对保存点的支持相当广泛,但我认为用于发现您当前处于事务中的机制(假设有一个)会有很大不同。

关于sql-server - 存储过程中适当范围的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/97857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com