INSERT ステートメントから最新の ID 値を取得しようとしています。OUTPUT、@@IDENTITY、または SCOPE_IDENTITY() のどれがより良い方法であるかという問題を無視して、OUTPUT を使用して INT 変数に直接挿入できますか、またはテーブル変数に出力してから選択する必要がありますか?
つまり、次のようなことができますか (これが機能しないことはわかっています):
DECLARE @NewId INT
INSERT INTO MyTable (foo)
OUTPUT INSERTED.id INTO @NewID
VALUES ('bar');
または、私は常にしなければなりませんか:
DECLARE @NewId TABLE (NewId INT)
DECLARE @NewIdAsInt INT
INSERT INTO MyTable (foo)
OUTPUT INSERTED.id INTO @NewID
VALUES ('bar');
SET @NewIdAsInt = (SELECT TOP(1) NewId FROM @NewId)