【发布时间】:2012-01-11 20:44:41
【问题描述】:
我使用 PHP 在 MySQL 数据库中插入一条记录。如果记录是新的,我会得到 insert_id,但如果它已经存在,我无法使用单个查询获取 id。
以下两个查询都允许我添加记录,如果它已经存在则跳过:
INSERT INTO `emails` (`email`) VALUE ('abc@example.com') ON DUPLICATE KEY UPDATE `id`=`id`
INSERT IGNORE INTO `emails` (`email`) VALUE ('abc@example.com')
在这两种情况下获得正确结果的正确方法是什么?
编辑:这是我的表格语法:
CREATE TABLE `emails` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
【问题讨论】: