Управление выполнением триггера при массовом импорте данных - PullRequest
0 голосов
/ 29 апреля 2010

При массовой вставке выполняется только триггер последней записи.

Если я массово вставляю 10 записей, триггер работает только для 10-й записи. Но мне нужен триггер для запуска всех 10 записей.

Пожалуйста, помогите мне с примером

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Я полагаю, вы говорите о SQL Server? Эта страница дает вам некоторые объяснения. Чтобы включить триггеры, вы должны использовать следующий синтаксис:

INSERT ... SELECT * FROM OPENROWSET(BULK...)
1 голос
/ 30 апреля 2010

Триггер выполняется для каждого оператора, а не для строки. Если вы назначите некоторую переменную из столбца во вставленных или удаленных таблицах, вы получите только одно, возможно, последнее значение. Вставленная таблица будет содержать столько строк, сколько имеется в пакете массовой вставки. Вот пример с базой данных 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
...