SQL Server Вставка нескольких строк с помощью триггеров - PullRequest
0 голосов
/ 09 мая 2018

Я загружаю данные из файла JSON в таблицу «main.jsontable». Триггерное задание заключается в вставке данных всех разных стран из «main.jsontable» в таблицу «main.country». Моя проблема в том, что триггер должен обрабатывать вставку нескольких строк, мой текущий код:

create or alter trigger main.afterParsing
on main.jsontable 
after insert
as
begin
    declare @country nvarchar(50);

    insert into main.country(countryName)
    values(@country)
end;

но я получаю эту ошибку (очевидно, потому что триггеры могут обрабатывать вставку только 1 строки за раз):

Невозможно вставить значение NULL в столбец 'countryName', таблица 'assignment2.main.country'; столбец не допускает пустых значений. Вставить не удается.

Кто-нибудь знает, как я могу использовать триггер для вставки нескольких строк?

Спасибо

1 Ответ

0 голосов
/ 09 мая 2018

Вам необходимо использовать псевдо-таблицу Inserted, и вы должны понимать, что она может содержать несколько строк (если ваш оператор INSERT вставил более 1 строки одновременно), и вам нужно обрабатывать эту таблицу соответствующим образом, используя правильный подход на основе множеств .

Попробуйте что-то вроде этого:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...