批量导入数据时控制触发器执行

时间:2010-04-29 11:28:14

标签: sql-server sql-server-2005 triggers

仅在最后一条记录中进行批量插入时,触发器正在执行。

如果我批量插入10条记录,则触发器仅针对第10条记录运行。但我需要触发器来运行所有10条记录。

请帮我举个例子

2 个答案:

答案 0 :(得分:2)

我假设你在说SQL Server? This page给你一些解释。要启用触发器,您可以使用如下语法:

INSERT ... SELECT * FROM OPENROWSET(BULK...)

答案 1 :(得分:1)

每个语句执行触发器,而不是每行执行。如果从插入或删除的表中的列中分配一些变量,则只能获得单个,可能是最后一个值。插入的表将包含批量插入批处理中的行数。以下是AdventureWorks数据库的示例:

declare @AddressLine nvarchar(50)
select count(*) [Address count] from Person.Address
select @AddressLine = AddressLine1 from Person.Address
select @AddressLine --only one, last address line