使用select和过程批量插入 - SQL Server

时间:2017-08-29 13:08:19

标签: sql-server triggers

我一直在搜索我的问题,但我没有发现任何相关内容。

我正在执行标志为FIRE_TRIGGERS的批量插入。

因此,我需要将批量插入中的每一行传递给一个过程。

当我逐行执行插入时,我的触发器工作正常,但是当我执行批量插入时,我的触发器不起作用。

我的触发器代码:

ALTER TRIGGER [dbo].[tgSetDetails]
   ON  [PORTALSQLDB].[dbo].[BurnTimeRawData]
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @ServiceTag varchar(10);
    DECLARE @Platform varchar(50);

    SELECT
        @ServiceTag = ServiceTag,
        @Platform = Platform
    FROM
        inserted

    EXEC spBurnTimeInsertData @ServiceTag, @Platform
END

知道如何做这份工作吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

对于每个插入语句或批量插入批处理,此触发器将触发一次。要为每一行调用proc,您需要一个游标。

将proc代码重构为基于集合的操作以包含在触发器代码中会更好。这样做会好得多。