我有一个包含“person_code”列的数据集。
此列包含以下数据:
现在,如果我将数据集的主键设置为“person_code”列,我将收到以下错误:
“这些列目前没有唯一值。”
有什么方法吗?我能想到的最好的方法是添加一个新列“primary_key”,然后用另一个符号替换结束/起始空格。这会引起一些额外的问题:如果我用_替换它们并且数据库中已经存在Carra_ ......
有更好的方法吗?
答案 0 :(得分:1)
这是一个数据库架构问题,您的问题的答案是,正如您所描述的那样,person_code
列不适合作为主键,因为它的值不是唯一的。
您的主键应该是100%唯一的 - 通常,增量生成的数字是合适的选择。
答案 1 :(得分:1)
主键总是唯一的,所以如果两个人拥有相同的人员代码,那么这确实会导致这个问题
现在,似乎它们并不完全相同(正如你所说的那样有一个尾随空格。我的猜测是你的代码可能会默认删除尾随空格。你可能想在开头和那里放一个符号结束,就像'Carra'和'Carra'让它们变得不同。
您可能需要定义另一个符号。尝试一个你知道永远不会出现在你的数据中的人。
答案 2 :(得分:0)
创建新的主键字段,最好使用数据类型的int或uniqueidentifier,这是针对您的问题和数据库长期维护的建议解决方案。
一般来说,值中的尾随空格是一个坏主意。从UI角度来看,还有数据完整性。您可以考虑清理数据,从数据中删除前导和尾随空格,特殊字符等。