这是我的数据库架构
+------------------+------------------+------+-----+---------------------+----------------+
| 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 auto increment on MySQL duplicate insert does not handle bulk inserts。我想做这样的事情:
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。