从源头防重复要点
- 用 PRIMARY KEY 约束某列或多列组合唯一
- 单字段唯一用 UNIQUE 索引:CREATE UNIQUE INDEX 名 ON 表(列)
- 多列组合唯一:UNIQUE (列1, 列2) 写在建表语句里
- 主键列默认 NOT NULL,组合唯一键各列也建议 NOT NULL
- 加了唯一约束后,重复插入会直接报错被拒绝
- 已存在的表用 ALTER TABLE 加唯一索引即可补防重
从源头防重复示例
-- 建表时给邮箱加唯一约束
CREATE TABLE member (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
email VARCHAR(80) NOT NULL,
phone VARCHAR(20),
PRIMARY KEY (id),
UNIQUE KEY uk_email (email)
);
-- 已有表补唯一索引
ALTER TABLE member ADD UNIQUE KEY uk_phone (phone);
避坑提醒:唯一索引会拒绝重复写入并抛错,若想'有就跳过、没有才插'用 INSERT IGNORE,错误变警告不中断。