.NET Developer Empire

帝国の逆襲

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  14  : 記事  5  : コメント  44  : トラックバック  8

記事カテゴリ

書庫

SELECT @@IDENTITY

これです!!

SQL Serverってあまりいじってなかったんだけど、最近どうしても必要になったので、手探りながら触ってます。

主キーの自動採番を使おうとIDENTITYを指定したんだけど、どうやってレコード挿入後にIDENTITY列を取得しようかと調べていたら見つけたもの。

SQL文の最後に「SELECT  @@IDENTITY」をつけるだけで良いって、楽すぎるじゃないか!!

ちょっと幸せになれた瞬間でしたー

なにかもっと幸せになれることないかなぁ???


正解は「SCOPE_IDENTITY」でした!! (2007/8/6)

以下、MSDNでの解説URL。

http://msdn2.microsoft.com/ja-JP/library/ms190315.aspx

http://msdn2.microsoft.com/ja-JP/library/ms187342.aspx


むらぷろさんがこの件についてまとめてくれました。以下のブログです。

SQL Server によるIDの生成

投稿日時 : 2007年8月5日 15:27

コメント

# re: 最近感動したこと 2007/08/05 20:55 けろ
幸せに浸っている中、大変恐縮なのですが、
@@IDENTITYは、すべてのスコープを対象にするので、
INSERT直後の採番結果を取得するのであれば、
やめた方がいいです。

私が以前やっていたProjectでは、泣かされました。

select scope_identity()

を使った方が宜しいかと思います。

# re: 最近感動したこと 2007/08/05 22:16 tatsumihr
あら、そうなんですか!
あまり動作の詳細までは調べていなかったので、今度きちんと調べてみます。

勉強になりました。ありがとうございました!

# re: 最近感動したこと 2007/08/06 0:17 中博俊
scope_identityはたしか2000で入ったような。
ということで、@@identityはいまや非推奨です。

# re: 最近感動したこと 2007/08/06 12:59 tatsumihr
MSDNを読むと、確かにscope_identityの方を信用しろとありますね。
http://msdn2.microsoft.com/ja-JP/library/ms190315.aspx
http://msdn2.microsoft.com/ja-JP/library/ms187342.aspx

SCOPE_IDENTITY の場合、INSERT文を実行したスコープの範囲内に限られるということで、今後はこちらを使います。

使う前にきちんと調査しなければですね(汗

# SQL Server によるIDの生成 2007/08/07 15:39 むらぶろ - .NETって面白い -
SQL Server によるIDの生成

# SQL Server によるIDの生成 2007/08/07 15:44 むらぶろ - .NETって面白い -
SQL Server によるIDの生成

Post Feedback

タイトル
名前
Url:
コメント: