Может ли SQL-вставка с использованием select вернуть несколько идентификаторов?
Я вставляю в таблицу, используя выбор
INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
скажем, у меня есть столбец идентичности в california_authors
, Могу ли я получить все идентификаторы, вставленные указанной выше конкретной вставкой, точно так же, как я могу получить @@IDENTITY для последней single insertion
?
Я не могу использовать команду выбора для california_authors
так как могут существовать ранее вставленные записи с фильтром State = 'CA'
1 ответ
Решение
Вы можете использовать предложение вывода.
Примерно так, если ваш столбец идентификаторов с именем `IdentityCol'вернет вам идентификаторы в качестве результирующего набора.
INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
Вы можете вставить идентификаторы в таблицу, используя output ... into
,
Вот пример, который хранит идентификаторы в табличной переменной.
declare @IDs table (id int)
INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol INTO @IDs
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'