对链接服务器表的SQL更新会为每一行触发触发器
我正在研究链接数据库服务器的一些奇怪行为。我只是创建一个临时表变量,添加一些可以在链接服务器表中找到的键,并使用它与目标表连接以进行更新对链接服务器表的SQL更新会为每一行触发触发器,sql,sql-server,database,triggers,Sql,Sql Server,Database,Triggers,我正在研究链接数据库服务器的一些奇怪行为。我只是创建一个临时表变量,添加一些可以在链接服务器表中找到的键,并使用它与目标表连接以进行更新 declare @stats_table table ( [Index] [bigint] not null primary key ) insert into @stats_table ([Index] ) select 1 union all select 2 union all select 3 union al
declare @stats_table table
(
[Index] [bigint] not null primary key
)
insert into @stats_table ([Index] )
select 1 union all
select 2 union all
select 3 union all
select 4
update [source]
set [source].[STATUS] = (-1)
from @stats_table as [stats]
inner join [LINKED INSTANCE].[DATABASE].[dbo].[LINKEDTABLE] as [source]
on [source].[INDEX] = [stats].[Index]
这会导致远程端(目标)上的触发器每更新一行触发一次,而不是在语句级别。在上面的示例中,触发器触发4次,但是下面的语句只触发一次
update [source]
set [source].[STATUS] = (-1)
from [LINKED INSTANCE].[DATABASE].[dbo].[LINKEDTABLE] as [source]
where [source].[INDEX] in(1, 2, 3, 4)
有没有人能解释我错在哪里。是否有配置设置或我缺少的东西
问候,
Tim如何检查触发器被触发的次数?触发器只是将一行插入表中作为测试。如果触发器触发一次,那么表中就有一行。在运行这些测试之前,我将截断此表。我一直假设触发器在语句级别触发,但在同一个框上跨多个实例使用链接查询更新时,情况似乎并非如此。奇怪。。。很奇怪。