[MySQL] 連番をINSERTと同時に挿入する方法

連番を挿入する場合、色々な方法があるかと思いますが、
AUTO_INCREMENT なんかだと欠番が出来ちゃうし…
MAX関数で取得した最大値+1をINSERT時に一緒に挿入して…だと
同時アクセスされた時にうまく値をもってこれなかったりするし、
それに2回SQLを発行しないといけないし…
…一発でスマートにやりたいものです。


それを実現してくれるのが

SELECT COALESCE(MAX(連番を入れるカラム)+1,1)

です。

コイツを INSERT文に入れてやります。

INSERT INTO テーブル名( 連番を入れるカラム, EXAMPLE_ID, EXAMPLE_NAME )
SELECT COALESCE(MAX(連番を入れるカラム)+1,1), ?, ? 
FROM テーブル名;

これで好きな値と一緒に連番が振れるようになります。

twitterfacebookhatenafacebook