我有这张桌子:
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字段吗?
答案 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,...,...);