タグ: #mysql
もしテーブルが AUTO_INCREMENT カラムを含み INSERT … UPDATE が行を挿入すると、LAST_INSERT_ID() 関数は AUTO_INCREMENT 値を返します。もしステートメントが代わりに行を更新すると、LAST_INSERT_ID() は無意味になります。しかし、LAST_INSERT_ID(expr) を利用する事でこれに対処する事ができます。id が AUTO_INCREMENT カラムだと仮定してください。LAST_INSERT_ID() が更新に意味を持つようにするには、次のように行を挿入してください。
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;ON DUPLICATE KEY UPDATE を利用する時は DELAYED オプションは無視されます。
知りませんでした。。
http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html
ON DUPLICATE KEY UPDATE と LAST_INSERT_ID - katano034の日記
11ヶ月前 | 固定リンク | 2011年 6月 22日 | 
