我有这张桌子:
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字段吗?
您需要添加唯一索引,然后使用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)
| 归档时间: |
|
| 查看次数: |
7911 次 |
| 最近记录: |