Триггер не запускается в SSIS

#sql-server #ssis #triggers

#sql-server #ssis #триггеры

Вопрос:

После вставки триггера у меня есть следующее:

 ALTER TRIGGER [dbo].[Add_IDBrg]
ON [dbo].[Groupe_Brg]
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE [dbo].[Groupe_Brg]
    SET  [IdBrg_Groupe] = (SELECT MAX(IdBrg_Groupe) 1 FROM [dbo].[Groupe_Brg])
    FROM Inserted i
    WHERE i.[id] = [dbo].[Groupe_Brg].[Id]
END
 

Когда я делаю обычную вставку, например :

 INSERT INTO [dbo].[Groupe_Brg] ([IdBrg_Groupe], [Checksum_grp], [SK_Groupe]) 
VALUES (0, 12355, 1112), (0, 12355, 1113);
 

Триггер может обновлять мои [IdBrg_Groupe] данные в обычном режиме, но когда я выполняю свои вставки с компонентом «OLE DB Destination» в SSIS, он не работает ( [IdBrg_Groupe] имеет значение NULL), несмотря на добавление «FIRE_TRIGGERS» в fastloadOptions.

В чем проблема?

Комментарии:

1. SELECT MAX(IdBrg_Groupe) 1 в любом случае звучит как недостаток дизайна; почему вы не используете последовательность? Это может легко повлиять на условия гонки. Кроме того, планируется ли, что при вставке нескольких строк все они получают один и тот же идентификатор?

2. @Larnu, я хочу вставить тот же [IdBrg_Groupe], что и [Checksum_grp], возможно ли это сделать с помощью последовательности?