Проблема в том, что INSERTED доступен только во время триггера
- Запустить изменения для создания списка идентификаторов
DECLARE @idStack VARCHAR(max)
SET @idStack=','
SELECT @idStack=@idStack+ltrim(str(id))+',' FROM INSERTED
- вызвать изменения, чтобы вызвать сохраненный процесс
EXEC updateCopy(@idStack)
- Процедура получения списка идентификаторов через запятую
CREATE PROCEDURE UpdateCopy(@IDLIST VARCHAR(max)) AS
BEGIN
UPDATE CopyTable SET
id = s.id,
-- many, many fields
FROM MainTable s WHERE charindex(','+ltrim(str(s.id))+',',@idList) > 0
AND CopyTable.id = s.id;
END
Производительность не будет хорошей, но она должна позволять вам делать то, что вы хотите.
Только что набрал на лету, но должен работать ОК