确保表条目是唯一的

时间:2012-07-17 18:05:57

标签: mysql sql database database-design

我有地址的mysql数据库表,它包含邮政编码/街道/城镇的单独列。

如何确保完整的表条目是唯一的,而不仅仅是其中一个列?

3 个答案:

答案 0 :(得分:2)

{post code, street, town}上设置composite密钥。

密钥可以是主密钥(PRIMARY KEY)或备用密钥(UNIQUE约束)。


BTW,两个不同的town可以有相同的post code吗?如果没有,您不需要密钥中的town。实际上,请考虑通过将town“提取”到单独的表来规范化模型。

答案 1 :(得分:1)

数据库表可能有多个唯一键,因此它会拒绝任何违反您在表中设置的约束的INSERT个查询。

只需将其他列设置为唯一,您就会发现问题已解决。

答案 2 :(得分:1)

mysql允许您为n个字段或列提供唯一键。当您将此列声明为唯一时,mysql将检查复制的约束。 有关详细信息,请阅读此mysql unique key

“UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。”

但是,我建议前端验证让用户感到舒服(只是因为你没有想到它;)