例によって同僚に、ON DUPLICATEを使ってる時の、LAST_INSERT_IDの挙動がなんかおかしいという話を受け調査を開始した。 複数の同僚に手伝ってもらいながら検証した結果次のような現象が起こることが分かったため、メモしておく。 ON DUPLICATE でプライマリキーに「文字」を利用する場合、LAST_INSERT_IDの値が 0 に変化し予期せぬ更新がかかったり、更新が失敗する問題がある。 これは、LAST_INSERT_ID が数値 しか扱えないことが原因と思われる。 次に検証手順を記す。 とりあえず、MySQLのバージョンは 5.5.19 ■一つ目のパターン「数値」の場合 このパターンは想定通りに動くので、特に問題は起こらない 1.まずは簡単なテーブルを作成する mysql> CREATE TABLE IF NOT EXISTS fff ( -> id VARCHAR