みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLServerのID列(自動連番)について

PHPとSQL Serverでウェブアプリケーションを作っています。
例として、下記のようなテーブルを想定します。
テーブル名 users
 user_id [int] ←主キー(IDENTITYプロパティを指定して、1ずつ増える連番)
 name [char(10)]

IDENTITYにより、INSERT INTO でuser_idの値を指定せずとも、一意のID値が割り振られます。
このINSERT処理は、PHPのmssql_queryでSQL文を発行しているのですが、
この時割り振られたuser_idが何であるかは、どうやって調べればよいのでしょうか。

IDENTITYを利用せず、INSERTする前にSELECT MAX(user_id)を発行して、
最も大きなuser_idを調べ、それを+1してINSERT、とすれば当然user_idは分かりますが、
せっかくIDENTITYの機能があるのに明らかに無駄な処理です。

どなたか分かる方、よろしくお願いします。

投稿日時 - 2011-08-01 17:10:29

QNo.6914205

すぐに回答ほしいです

質問者が選んだベストアンサー

@@IDENTITY
とか,
SCOPE_IDENTITY
とか,
IDENT_CURRENT
とか,
OUTPUT句
とか,色々あります。

MSDN: @@IDENTITY (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms187342.aspx
MSDN: SCOPE_IDENTITY (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms190315.aspx
MSDN: IDENT_CURRENT (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms175098.aspx
MSDN: OUTPUT 句 (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms177564.aspx

それぞれ動作が違うため,適切なものを選んでください。

投稿日時 - 2011-08-01 19:40:55

お礼

貴重な情報提供ありがとうございます。
それぞれ調べてみます。

投稿日時 - 2011-08-03 08:46:39

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問