SQL Server使用触发器插入多行

时间:2018-05-09 16:23:58

标签: sql-server triggers

我正在将数据从JSON文件加载到表" main.jsontable"触发器的工作是插入来自" main.jsontable"的所有不同国家的数据。进入" main.country"表。我的问题是触发器需要处理插入多行,我当前的代码是:

:)

但是我得到了这个错误(显然因为触发器一次只能处理1行):

  

无法将值NULL插入列' countryName',table' assignment2.main.country&#39 ;;列不允许空值。 INSERT失败。

有谁知道如何使用触发器插入多行?

由于

1 个答案:

答案 0 :(得分:1)

您需要使用Inserted伪表,并且您需要了解它可以包含多行(如果您的INSERT语句一次插入多于一行),您需要使用适当的基于集合的方法相应地处理该表。

尝试这样的事情:

create or alter trigger main.afterParsing
on main.jsontable 
after insert
as
begin
    insert into main.country(countryName)
        select countryName
        from Inserted
        -- if the data being inserted could have NULL in the
        -- countryName - filter those entries out
        where countryName is not null
end;