我有地址的mysql数据库表,它包含邮政编码/街道/城镇的单独列。
如何确保完整的表条目是唯一的,而不仅仅是其中一个列?
答案 0 :(得分:2)
在{post code, street, town}
上设置composite密钥。
密钥可以是主密钥(PRIMARY KEY)或备用密钥(UNIQUE约束)。
town
可以有相同的post code
吗?如果没有,您不需要密钥中的town
。实际上,请考虑通过将town
“提取”到单独的表来规范化模型。
答案 1 :(得分:1)
数据库表可能有多个唯一键,因此它会拒绝任何违反您在表中设置的约束的INSERT
个查询。
只需将其他列设置为唯一,您就会发现问题已解决。
答案 2 :(得分:1)
mysql允许您为n个字段或列提供唯一键。当您将此列声明为唯一时,mysql将检查复制的约束。 有关详细信息,请阅读此mysql unique key
“UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。”
但是,我建议前端验证让用户感到舒服(只是因为你没有想到它;)