Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对链接服务器表的SQL更新会为每一行触发触发器_Sql_Sql Server_Database_Triggers - Fatal编程技术网

对链接服务器表的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

如何检查触发器被触发的次数?触发器只是将一行插入表中作为测试。如果触发器触发一次,那么表中就有一行。在运行这些测试之前,我将截断此表。我一直假设触发器在语句级别触发,但在同一个框上跨多个实例使用链接查询更新时,情况似乎并非如此。奇怪。。。很奇怪。