Насколько я знаю, вы не можете сделать это с прямым SQL в одном скрипте. Но вы можете создать триггер INSERT. Теперь я ненавижу срабатывает, но это один из способов сделать это.
В зависимости от того, что вы пытаетесь сделать, вы, возможно, захотите сначала вставить строки во временную таблицу или переменную таблицы и таким образом обработать результирующий набор. Надеемся, что есть уникальный столбец, на который вы можете сослаться.
Вы также можете заблокировать таблицу, получить ключ max, вставить строки, а затем снова получить ключ max и выполнить диапазон.
Trigger:
--Use the Inserted table. This conaints all of the inserted rows.
SELECT * FROM Inserted
Temp Table:
insert field1, unique_col into #temp from tbl_abc
insert into tbl_xyz (field1, unique_col) select field1, unique_col from tbl_abc
--This could be an update, or a cursor, or whatever you want to do
SELECT * FROM tbl_xyz WHERE EXISTS (SELECT top 1 unique_col FROM #temp WHERE unique_col = tbl_xyz.unique_col)
Диапазон ключей:
Declare @minkey as int, @maxkey as int
BEGIN TRANS --You have to lock the table for this to work
--key is the name of your identity column
SELECT @minkey = MAX(key) FROM tbl_xyz
insert into tbl_xyz select field1 from tbl_abc
SELECT @maxkey = MAX(key) FROM tbl_xyz
COMMIT Trans
SELECT * FROM tbl_xyz WHERE key BETWEEN @minkey and @maxkey