MSSQL 数値を+1してINSERTする方法

| コメント(0)

Microsoft SQL Server 2005にて。

自動でインクリメントする項目は、IDENTITYで設定できるが、1テーブルには1つしかありません。

そこで、そのほかに自動でインクリメントする項目がほしかった場合は、どのようにするのか、調べてみました。

 わりと簡単にMAX+1とかでいいじゃん、って思ったりもしましたが、レコードが0件の時は、成立しません。

0件の時は、初期値がほしいわけです。

それを解決するのが「COALESCE」。

取得した値がnullだったら、○を返す、というようなもの。

すばらしいです。これで、IDENTITYなんか怖くない。ちなみに、COALESCEは、MySQLにもあります。そのほかのDBにもあるとおもいます。

INSERT INTO table_name(id)
SELECT COALESCE(MAX(id)+1,1)
FROM table_name

コメントする

このブログ記事について

このページは、utが2009年6月25日 11:49に書いたブログ記事です。

ひとつ前のブログ記事は「MSSQL Serverで.NET2.0 パラメータの追加方法」です。

次のブログ記事は「MSSQL 直前のINSERTされたIDENTITYの値を取得するには?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.04

にほんブログ村

にほんブログ村 IT技術ブログへ
にほんブログ村