Ваш триггер просто сломан.В SQL Server триггеры обрабатывают несколько строк одновременно.Предполагая, что inserted
имеет одну строку, это фатальная ошибка - и я хотел бы, чтобы это вызвало синтаксическую ошибку.
Я думаю, что это код, который вы хотите:
ALTER TRIGGER [dbo].[trgAfterInsert] ON [dbo].[tbl_current_data]
AFTER INSERT
AS
BEGIN
INSERT INTO Table3 (sdp_id, value, start_date)
SELECT sdp_id, value,
DATEADD(SECOND, -DATEPART(SECOND, start_date), start_date)
FROM inserted i;
END;
Помимо правильностиеще одно преимущество заключается в том, что код проще писать.
Примечание. Часть «секунд» установлена на 0. Однако - в зависимости от типа - у start_date
могут сохраняться доли секунды.Если это проблема, задайте другой вопрос.