数据集 - 设置主键时重复的值

时间:2009-11-23 14:25:11

标签: c# .net dataset

我有一个包含“person_code”列的数据集。

此列包含以下数据:

  • “卡拉”
  • “Carra” - >一个尾随空间

现在,如果我将数据集的主键设置为“person_code”列,我将收到以下错误:

“这些列目前没有唯一值。”

有什么方法吗?我能想到的最好的方法是添加一个新列“primary_key”,然后用另一个符号替换结束/起始空格。这会引起一些额外的问题:如果我用_替换它们并且数据库中已经存在Carra_ ......

有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

这是一个数据库架构问题,您的问题的答案是,正如您所描述的那样,person_code列不适合作为主键,因为它的值不是唯一的。

您的主键应该是100%唯一的 - 通常,增量生成的数字是合适的选择。

答案 1 :(得分:1)

主键总是唯一的,所以如果两个人拥有相同的人员代码,那么这确实会导致这个问题

现在,似乎它们并不完全相同(正如你所说的那样有一个尾随空格。我的猜测是你的代码可能会默认删除尾随空格。你可能想在开头和那里放一个符号结束,就像'Carra'和'Carra'让它们变得不同。

您可能需要定义另一个符号。尝试一个你知道永远不会出现在你的数据中的人。

答案 2 :(得分:0)

创建新的主键字段,最好使用数据类型的int或uniqueidentifier,这是针对您的问题和数据库长期维护的建议解决方案。

一般来说,值中的尾随空格是一个坏主意。从UI角度来看,还有数据完整性。您可以考虑清理数据,从数据中删除前导和尾随空格,特殊字符等。