首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >您可以禁用触发器中的触发器吗?SQL Server 2008

您可以禁用触发器中的触发器吗?SQL Server 2008
EN

Stack Overflow用户
提问于 2012-07-06 19:59:37
回答 3查看 3.1K关注 0票数 0

您可以在触发器中禁用和重新启用触发器吗?

例如,我在前端应用程序中有一条信息,可以放在两个位置之一。如果有人把它放在位置A,我想把它复制到位置B,反之亦然。

因此,我的想法是在不同的表上放置两个触发器1)当它放入A中时,它放入B中。2)当它放入B中时,它放入A中

这将创建一个永无止境的循环(我假设?)那么,您是否可以在触发器2运行时禁用触发器1,并在运行结束时启用它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-07 06:16:10

虽然我同意Damien的观点,即在同一数据库的两个表中复制数据通常是不可取的,但如果您确实有很好的理由这样做,那么您可以使用INSTEAD OF触发器而不是AFTER触发器(我假设您现在正在考虑)。这样,您就可以用您自己编写和控制的两个单独的INSERT“替换”单个INSERTs

票数 1
EN

Stack Overflow用户

发布于 2012-07-06 20:02:11

是的,您可以:

代码语言:javascript
运行
复制
ALTER TABLE tablename DISABLE TRIGGER triggername
ALTER TABLE tablename ENABLE TRIGGER triggername

不过,对于您的解决方案,我会创建一个触发器,该触发器在两端运行相同,并且足够聪明,不会搞砸自己。

即使触发器智能地区分用户/客户端插入和触发器“移动”。

票数 0
EN

Stack Overflow用户

发布于 2012-07-06 20:03:38

或者,您可以在执行更新之前检查触发器中的信息是否已更改,这将结束循环?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11361791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档