如何工作UNIQUE + INSERT IGNORE?

时间:2011-04-27 15:55:59

标签: mysql

我有这张桌子:

CREATE TABLE `recent_adds` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `trackid` INT(11) UNSIGNED NOT NULL,
    `user` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'

我只想在表中没有插入trackd / user对时插入数据。

我知道有一种UNIQUE + INSERT IGNORE可以解决这类问题,但实际上我并不了解它是如何工作的。

如果我执行此命令:

ALTER TABLE recent_adds
ADD UNIQUE INDEX unique_name (`trackid`, `user`);

我看到这些字段是独一无二的?关于mysql代码,我没看到它

此外,在此之后,我可以删除id字段吗?

1 个答案:

答案 0 :(得分:7)

您需要添加唯一索引,然后使用insert ignore而不是普通插入。至于id字段,这取决于你,但我会保留它:

ALTER TABLE recent_adds
ADD UNIQUE KEY recent_adds_unique_idx (trackid,user);

INSERT IGNORE INTO recent_adds (id,trackid,user)
VALUES(NULL,...,...);