У меня есть таблица, в которой используется триггер вместо вставки. Триггер обрабатывает данные для каждой вставленной строки перед ее вставкой. Поскольку вставленная таблица не может быть изменена, она была реализована с использованием таблицы temp (#). В конце триггера выполняется выбор из временной таблицы, чтобы вернуть вставленные данные вызывающему клиенту. Когда я выполняю вставку в SSMS, я вижу возвращаемые данные, а все столбцы имеют имена и значения. Мой триггер выглядит так:
Create TRIGGER [dbo].[RealTableInsteadOfInsert] on [dbo].[RealTable]
INSTEAD OF INSERT
AS
BEGIN
set nocount on;
declare @lastDigit int;
if exists (select * from inserted)
Begin
Select *
into #tempInserted
from inserted
.... Logic to add and manipulate column data .....
INSERT INTO RealTAble(id, col1, col2, col3,....)
Select *
from #tempInserted;
Select id as insertId, *
from #tempInserted;
END
End
Мой вопрос в том, как я могу записать выходные данные триггера вместо триггера в таблицу для дальнейшей обработки с использованием возвращенных данных. Я не могу использовать предложение вывода в операторе вставки, поскольку временная таблица больше не существует, а данные, которые были рассчитаны / изменены при вставке, не были выполнены во вставленной таблице. Есть ли у меня единственный вариант обновить триггер, чтобы использовать глобальную временную таблицу вместо локальной?