我正在使用SQL Server 2008,有一个带有id(数字)列的表作为主键。还有三个varchar列的唯一索引。我能够添加一行与三列完全相同的一组。我通过对值的简单查询验证了它,并返回了2行。
我编辑了索引并添加了id列。当我再次尝试编辑并删除id列时,它抱怨有重复的行,它删除了索引但无法创建它。
然后我清理重复的数据库,使用与唯一和非聚集相同的3个varchars重新创建索引,现在它正常工作,不允许重复。
有谁知道为什么忽略了这个索引的唯一性?
答案 0 :(得分:5)
索引可能已被禁用(请参阅Disabling Indexes),您的“重复”值可能不同(例如尾随空格),或者您的测试可能不正确。
当然,您没有在强制唯一索引中插入副本。
答案 1 :(得分:0)
我不是这个主题的专家,但索引的“唯一”设置可能是指索引的构建/存储方式,而不是它是一个约束。这可能也意味着索引的性能是次优的。 创建索引时,DBMS可能会检查此内容。