12

選択範囲を使用してテーブルに挿入しています

INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

にID列があるとしcalifornia_authorsます。最後に@@IDENTITYを取得できるのと同じように、上記の特定の挿入によって挿入されたすべてのIDを取得できますsingle insertionか?

california_authors以前に挿入されたフィルター付きのレコードが存在する可能性があるため、selectコマンドを使用できませんState = 'CA'

4

1 に答える 1

27

出力句を使用できます。

ID 列の名前が「IdentityCol」の場合、このようなものは ID を結果セットとして返します。

INSERT california_authors (au_id, au_lname, au_fname)
OUTPUT inserted.IdentityCol
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

を使用して、ID をテーブルに挿入できますoutput ... into
ID をテーブル変数に格納するサンプルを次に示します。

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'
于 2012-01-24T06:41:49.823 に答える