Может ли 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'
Другие вопросы по тегам