Mysql insert without auto-increase when duplicate

1389 ワード

INSERT INTO video_tag_all(tagname,ctime) 

     SELECT '   ',1413954816 FROM video_tag_all 

     WHERE (SELECT last_insert_id(id) FROM video_tag_all WHERE tagname='   ') IS NULL

LIMIT 1;

SELECT LAST_INSERT_ID();

背景:insert ignoreまたはinsertを使用...on duplicate key updateは、自己増加フィールドに1を追加し、不要なデータ空洞をもたらします.上のSQLはこの問題を回避し、いつでも記録IDを取得できます.
欠陥:テーブルの初期化時に記録があることを保証しなければならない.そうしないとselect....limit 1データが見つからないとinsertできません