2011-01-06 6 views
11

私はSQL Serverのリスト

INSERT INTO (...) SELECT ... FROM ... 

をやっている自動インクリメントIDを持つテーブルを持っている私が挿入されたIDのリストを取得するための方法はありますか?

私は後に、その後挿入する前に、最大のIDを取得することができ思考と新しいものの間ですべてのものを想定しますが、行はどこか別の場所から挿入されますならば、私が問題に実行することができました。これを行う適切な方法はありますか?

私は、SQL Server 2005の

答えて

31

使用output句を使用しています。

DECLARE @InsertedIDs table(ID int); 

INSERT INTO YourTable 
    OUTPUT INSERTED.ID 
     INTO @InsertedIDs 
    SELECT ... 
+0

グレート! C#にこの@InsertedIDsを返す方法がある場合は疑問に思いますか? – Icerman

+0

素晴らしい!これはカーソルを宣言することから私を救った! – Alex

3

table変数を作成し、table変数にOUTPUT句を使用します。

OUTPUT inserted.NameOfYourColumnId INTO tableVariable

次に、あなたごtable変数からSELECTすることができます。

関連する問題