私は2つの列を持つテーブルを持っています:
CREATE TABLE MyTable(
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar(100) NOT NULL);
SELECT INSERT ステートメントを使用してデータを複製したい:
INSERT INTO MyTable (Name)
SELECT Name FROM MyTable
ここにトリッキーな部分があります-元のIDと新しいIDの間のマッピングテーブルを取得したい:
DECLARE @idsMap TABLE (OriginalId int, NewId int)
OUTPUT 句を使用すると思いますが、何らかの理由で機能しません。
INSERT INTO MyTable (Name)
OUTPUT t.Id, INSERTED.Id INTO @idsMap (OriginalId, NewId)
SELECT Name FROM MyTable t
-- Returns error The multi-part identifier "t.Id" could not be bound.
関連する質問:
select を使用した SQL 挿入は複数の ID を返すことができますか?
テーブル パラメーターを使用して挿入し、ID 値を取得することは可能ですか?