#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], возможно ли это сделать с помощью последовательности?