這裏是我的數據庫架構如何在不增加重複項的auto_increment列的情況下執行批量mysql插入?
+------------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------------------+----------------+
| phone_number | varchar(64) | NO | UNI | NULL | |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
+------------------+------------------+------+-----+---------------------+----------------+
我希望能夠在一次插入多個電話號碼(PHONE_NUMBER是一個獨特的密鑰),但我不想遞增AUTO_INCREMENT領域,如果我有重複。
如果我做INSERT INTO phone_numbers (phone_number) VALUES (%values%) ON DUPLICATE KEY UPDATE id=id;
auto_increment將增加,即使重複。
此問題:prevent autoincrement on MYSQL duplicate insert不處理批量插入。我想要做這樣的事情:INSERT INTO phone_numbers (phone_number) SELECT '12345', '123456' FROM DUAL WHERE NOT EXISTS(SELECT phone_number FROM phone_numbers WHERE phone_number IN ('12345', '123456');
但DUAL
表並沒有真正處理好多個值。
任何想法? MySQL 5.5。
非常重要,爲什麼它不光滑R' – eggyal
我很好奇你爲什麼關心auto_increment字段的增加。 –
因爲我可以達到int無符號的天花板。是的,我知道我可以將它與「mediumint」或「bigint」相提並論,但如果我不需要,我寧願不去。我將處理比實際值更多的重複。 – Newtang