我有一些代码可以禁用表上的触发器,运行更新并重新启用触发器。它不会删除源表或更新架构。
这一切都很好,但同时运行单独的查询,使用该表作为SELECT INTO的源。出于某种原因,当两个查询同时运行时,我收到此错误:
目标表之后的架构已更改 创建了。重新运行Select Into 查询。
(我正在选择临时表。)
所以,我的第一个问题:
调用“DISABLE TRIGGER”或“ENABLE TRIGGER”会改变TSQL中表的架构吗?
我的第二个问题:
当目标是临时表时,为什么第二个查询会报告架构更改?
答案 0 :(得分:1)
显然称为“DISABLE TRIGGER”或“ENABLE TRIGGER”会改变表的架构。
可能会在系统表中捕获所有位标记,以跟踪此更改并导致您感到悲伤。可能你可以用不同的方式“告诉”触发器“不运行”。创建一个表并插入一行,在触发器中检查该表中一行的存在,如果存在,则返回0,否则进行处理。现在只需根据需要插入/删除此行...
答案 1 :(得分:1)
您不希望在非单用户模式的生产系统上禁用触发器,或者您可能存在严重的数据完整性问题。它禁止所有用户使用tirgger,而不仅仅是你。如果您希望daqtabase正常运行,我认为您需要找到一种不同的方法来处理您的问题。