如何工作UNIQUE + INSERT IGNORE?

mar*_*zzz 4 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'
Run Code Online (Sandbox Code Playgroud)

而且我只想在表中没有插入对跟踪/用户时才插入数据.

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

如果我执行此命令:

ALTER TABLE recent_adds
ADD UNIQUE INDEX unique_name (`trackid`, `user`);
Run Code Online (Sandbox Code Playgroud)

我在哪里看到这些字段是独一无二的?在mysql代码上我没有看到它

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

Ike*_*ker 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,...,...);
Run Code Online (Sandbox Code Playgroud)