我有地址的mysql数据库表,它包含邮政编码/街道/城镇的单独列。
如何确保完整的表条目是唯一的,而不仅仅是其中一列?
在 上制作复合键{post code, street, town}
。
键可以是主键(PRIMARY KEY)或备用键(UNIQUE 约束)。
顺便说一句,两个不同town
的 s 可以有相同的post code
吗?如果没有,则不需要town
in 键。事实上,考虑通过“提取”town
到单独的表来规范化您的模型。
一个数据库表可能有多个唯一键,因此它将拒绝任何INSERT
违反您在表中设置的约束的查询。
只需将其他列设置为唯一,您应该会发现您的问题已解决。
mysql 允许您为 n 个字段或列拥有一个唯一键。当您将此列声明为 unique 时,mysql 检查重复约束。有关更多信息,请阅读此mysql 唯一键
“UNIQUE 和 PRIMARY KEY 约束都为一列或一组列提供唯一性保证。”
但是,我建议进行前端验证以使用户感到舒适(以防你没有想到它;))