Если у вас есть контроль над таблицей (или вы можете создать другую таблицу), как насчет хранения «action_id? »
Если вы добавите его на свой стол, вы можете сделать что-то вроде этого:
Declare @tranId int
Select @tranId = Max(transaction_id) + 1 from [table]
Insert Into [table] (field1, field2, transactionId)
Select field1, field2, @tranId
From //the rest of your query
Вы бы вытащили новые идентификаторы:
Select Id from [table] where transaction_id = @tranId
Как примечание, вам нужно будет либо выполнить этот запрос немедленно как часть вашей хранимой процедуры, либо вам нужно сохранить идентификатор транзакции, который вы использовали где-то, чтобы вы могли вытащить правильные строки, не беспокоясь о множественных одновременных вставки.