SQL Server 中更新触发器后

问题描述 投票:0回答:1

我在更新表上有触发器。我希望触发器不在某些字段更新时执行。我在更新语句之前禁用触发器,然后启用它。效果很好。但即使在禁用它之后,触发器仍然会在更新语句上触发。

如果我通过 SSMS 手动禁用触发器,然后运行过程,它不会在执行更新语句时执行触发器。效果很好。当我以编程方式执行此操作时,它不起作用。这可能是 SQL Server 的错误吗?

我尝试过 chatGPT/Google 和 Microsoft 文档,但找不到任何帮助

sql sql-server triggers
1个回答
0
投票

我怀疑,发生这种情况是因为你在同一个会话中这样做了

Disable Trigger xxxxx.yyyyy......
Update MyTable SET .....

听起来更改尚未应用/提交到数据库。尝试在 2 个不同的事务中执行它。

但是,请考虑流程的多个实例将如何为此竞争。一个会要求启用触发器,另一个会要求禁用触发器。这是一个糟糕的解决方案。一种更好的处理方法是使用

INSTEAD OF
触发器。通过这种技术,您可以正确地运行应用程序,而不会出现多实例并发的问题。 这是一个例子

© www.soinside.com 2019 - 2024. All rights reserved.