有没有办法让整个MySQL行独一无二

时间:2011-07-20 12:12:31

标签: mysql unique

我在MySQL中有一个包含30列和数千个条目的表 有没有办法让每一行都是唯一的,这意味着如果一行已经存在,我就不能再次进入该行了。

我不能在这里使用主键或唯一键,因为每个列都可能会重复 我希望这行是唯一的。 例如: - 有一个带

的表
columns->name,age,height,weight.

在本专栏中,我不能将任何一列或两列唯一,但我不应该有两个具有相同数据的条目。

5 个答案:

答案 0 :(得分:19)

您可以创建一个包含表格中所有列的唯一索引

ALTER TABLE buyers ADD UNIQUE idx_row_unique(first_name,last_name,...);

这样,您可以保留唯一的AUTO INCREMENT主键以进行连接,同时仍然确保表中的所有数据都是唯一的。

答案 1 :(得分:11)

您需要一个复合主键。

复合主键告诉MySQL您希望主键是字段的组合。

更多信息: Why use multiple columns as primary keys (composite primary key)

答案 2 :(得分:4)

您可以在所有列上创建UNIQUE key,而不是在每列上创建单独的唯一键。这意味着值的组合将是唯一的 - 正是您所需要的。但请注意,如果任何列允许空值,如果列包含null值,则它将被计为唯一,即使另一行包含相同的值,null表示相同的值。

答案 3 :(得分:2)

您可以在多个列上创建唯一索引。只需将所有列放在索引中即可。如果列很大,则可能会遇到索引最大长度的问题,但请先尝试并查看。

答案 4 :(得分:0)

您可以对数据进行哈希处理并将哈希值设置为PK,这将确保行是唯一的。