astech

柱に印をつける身長記録の、デジタル版

AUTO_INCREMENTとLAST_INSERT_ID(id+1)インクリメントの違い

連番IDが欲しい時、

テーブル定義の時に

create table test_table (
   id int not null auto_increment
)

として、勝手にインクリメントされるようにする方法と、

sequenceテーブルを作って

UPDATE sequence SET id=LAST_INSERT_ID(id+1);

として、手動でIDを発行する方法の二つがある...と思っています。

両者の違いについて調べました

とりあえず、一番大きな?違いはロールバックの時の挙動

ロールバックした後、次のIDを発行するとき、

  1. AUTO_INCREMENTの場合はロールバックされた次のIDが発行されます

  2. LAST_INSERT_IDの場合はロールバックされて、無かったことになったIDが発行されます

 

この違いが実用上どう異なるのかはまだわからんので後々...