MySQLのMAX値+1 
日曜日, 11月 26, 2006, 05:49 AM - プログラミング
先日やってみてできたので、メモ。
MySQLはPostgreSQLとかとちがってカーソルがありません。なので、データベースにレコードを追加する場合、自動加算(オートインクリメント)でもフィールドに設定しておかないと、MAX+1ができません。
が、できる方法を見つけました。というか、みんなやってることなのかもしれないけども。

とりあえず、MySQLはINSERTするテーブルと同じテーブルをサブクエリとして設定することはできません。マニュアルに書いてあります。
なので、下記のようなことはできないということ。

INSERT INTO tbl_hoge (
seq
name
) VALUES (
( SELECT MAX( seq ) + 1 FROM tbl_hoge )
'ほげ'
)

でだ。できる方法というのが、下記です。

INSERT INTO tbl_hoge (
seq
name
)
SELECT
MAX( seq ) + 1,
'ほげ'
FROM
tbl_hoge


なんだよー、つい癖でINSERT INTO 〜 VALUESって書いてたけども。
癖ってこわいわぁ。
コメントを書く   |  このエントリーのURL   |  related link   |   ( 2.9 / 30 )


Back