“在创建目标表后更改了架构。重新运行Select Into查询。”:

时间:2009-07-14 14:45:47

标签: sql-server tsql triggers

我有一些代码可以禁用表上的触发器,运行更新并重新启用触发器。它不会删除源表或更新架构。

这一切都很好,但同时运行单独的查询,使用该表作为SELECT INTO的源。出于某种原因,当两个查询同时运行时,我收到此错误:

  

目标表之后的架构已更改   创建了。重新运行Select Into   查询。

(我正在选择临时表。)

所以,我的第一个问题:

调用“DISABLE TRIGGER”或“ENABLE TRIGGER”会改变TSQL中表的架构吗?

我的第二个问题:

当目标是临时表时,为什么第二个查询会报告架构更改?

2 个答案:

答案 0 :(得分:1)

显然称为“DISABLE TRIGGER”或“ENABLE TRIGGER”会改变表的架构。

可能会在系统表中捕获所有位标记,以跟踪此更改并导致您感到悲伤。

可能你可以用不同的方式“告诉”触发器“不运行”。创建一个表并插入一行,在触发器中检查该表中一行的存在,如果存在,则返回0,否则进行处理。现在只需根据需要插入/删除此行...

答案 1 :(得分:1)

您不希望在非单用户模式的生产系统上禁用触发器,或者您可能存在严重的数据完整性问题。它禁止所有用户使用tirgger,而不仅仅是你。如果您希望daqtabase正常运行,我认为您需要找到一种不同的方法来处理您的问题。