2

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)
4

2 に答える 2

1

OUTPUT INTO は、何らかの種類のテーブル (テーブル変数、一時テーブル、またはその他のテーブル) を参照する必要があります。

http://msdn.microsoft.com/en-us/library/ms177564.aspx

とにかく Scope_Identity() の何が問題なのですか?

于 2012-08-06T10:27:04.887 に答える