gpt4 book ai didi

sql-server - SQL Server 触发器循环

转载 作者:行者123 更新时间:2023-12-02 11:57:57 24 4
gpt4 key购买 nike

我想知道是否可以在两个表上添加一个触发器,将数据复制到另一个表。

例如:

  • 我有两个用户表,users_V1 和 users_V2,当用户使用其中一个 V1 应用程序更新时,它也会激活一个触发器,在 users_V2 中更新它。

  • 如果我想在V2表上添加相同的触发器,以便在V2中更新用户时更新V1中的数据,会不会陷入无限循环?有什么办法可以避免这种情况吗?

最佳答案

我不建议在处理过程中显式禁用触发器 - 这可能会导致奇怪的副作用。

检测(和防止)触发器中的循环的最可靠方法是使用 CONTEXT_INFO()

示例:

CREATE TRIGGER tr_Table1_Update
ON Table1
FOR UPDATE AS

DECLARE @ctx VARBINARY(128)
SELECT @ctx = CONTEXT_INFO()
IF @ctx = 0xFF
RETURN

SET @ctx = 0xFF

-- Trigger logic goes here

参见this link获取更详细的示例。

<小时/>

有关 SQL Server 2000 中 CONTEXT_INFO() 的注意事项:

支持上下文信息,但显然不支持 CONTEXT_INFO 函数。您必须使用它:

SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID

关于sql-server - SQL Server 触发器循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2237499/

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