【发布时间】:2009-11-23 14:25:11
【问题描述】:
我有一个包含“person_code”列的数据集。
此列包含以下数据:
- “卡拉”
- “Carra” -> 一个尾随空格
现在,如果我将数据集的主键设置为“person_code”列,我将收到以下错误:
“这些列目前没有唯一值。”
有什么办法吗?我能想到的最好的方法是添加一个新列“primary_key”,然后用另一个符号替换结束/开始空格。这将导致一些额外的问题:如果我将它们替换为 _ 并且数据库中已经存在 Carra_...
有没有更好的办法?
【问题讨论】:
-
为什么要在主键列中允许尾随空格?我知道“Carra”和“Carra”是不同的值是完全正确的,但它充其量只会造成混淆。
-
好吧,我们的应用程序剥离了代码。第三方应用程序不会剥离它们。所以我们被他们困住了。
-
FWIW,我也有同样的情况。我在其中一行中继承了具有相同尾随空格模式的数据,并且我认为 DataSet.PrimaryKey 抛出此异常是一个错误,当 SQL Server 接受此数据作为主键列有效时,创建记录时.如果这是一个问题,那么它应该被标记出来。
-
实际上,该表没有将列设置为主键,所以这可能是 SQL Server 接受此示例的“Carra”和“Carra”的等效项的原因。只有我的代码在这个列上设置了 DataSet.PrimaryKey,所以当然不能保证数据真的是唯一的。