MySQL 的主键与唯一索引约束是个挺值得花时间理解的东西,尤其是你在做数据完整性这块比较较真的时候。主键就像身份证,一个表只能有一个,而且不能为空;唯一索引呢,倒是允许空值,但每个值得唯一。用 InnoDB 的话,出错还能回滚,MyISAM 就直接中断,挺容易踩坑的。你写`INSERT ... ON DUPLICATE KEY UPDATE`也算是个补救方案,想插就插,冲突就改,灵活点儿。调试的时候,记得加上SHOW WARNINGS看看问题在哪儿,省得盲调浪费时间。,搞清楚这些约束,写 SQL 才能更稳妥。