Подтвердить что ты не робот

Может ли SQL вставить, используя select return multiple identity?

Я вставляю в таблицу с помощью выделения

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?

Я не могу использовать команду select для california_authors, поскольку там могут существовать ранее вставленные записи с фильтром State = 'CA'

4b9b3361

Ответ 1

Вы можете использовать предложение output.

Что-то вроде этого, если ваш столбец идентификации с именем `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'