gpt4 book ai didi

TSQL 使用事务创建触发器并 try catch block

转载 作者:行者123 更新时间:2023-11-30 23:49:06 25 4
gpt4 key购买 nike

我对触发器中的事务有一些疑问,但我还没有找到答案。

CREATE TRIGGER A_AI ON A
AFTER INSERT AS

BEGIN TRY --is the try block 1 transaction ? or do I have to begin the transaction?

--BEGIN TRAN: may I start the transaction like this?
-- SOME DANGEROUS OPERATIONS

COMMIT --has this sense here?
END TRY
BEGIN CATCH --silent catch no rasing errors.
ROLLBACK TRANSACTION -- does it work without BEGIN TRANSACTION? if so, is it the whole try block?
END CATCH

GO

最佳答案

触发器始终在事务上下文中执行 - 每个 DML 语句都在事务中运行。 Implicit Transactions 这通常是隐藏的设置为 commit automatically在 SQL Server 中。

如果您从触发器中发出回滚,这将(与回滚一样)回滚所有事务,无论嵌套与否。

通常,您不会在触发器内提交,除非(如在您注释掉的示例中)您显式打开嵌套事务。

如果您的问题还有其他方面,我无法从您发布的示例中找出它们是什么。虽然我一直很喜欢人们在询问 SQL 问题时发布实际 SQL,但有时一些评论或实际问题的要点列表会有所帮助。

关于TSQL 使用事务创建触发器并 try catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131003/

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