sql-server – 我可以添加一个忽略现有违规的唯一约束吗?

前端之家收集整理的这篇文章主要介绍了sql-server – 我可以添加一个忽略现有违规的唯一约束吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表,当前在列中有重复的值.

我无法删除这些错误的重复项,但我想阻止添加其他非唯一值.

我可以创建一个不检查现有合规性的UNIQUE吗?

我尝试过使用NOCHECK但是没有成功.

在这种情况下,我有一个表将许可信息与“CompanyName”联系起来

编辑:具有相同“CompanyName”的多行是错误数据,但我们目前无法删除或更新这些重复项.一种方法是让INSERT使用一个存储过程,这个存储过程会因重复而失败……如果有可能让sql自己检查唯一性,那就更好了.

公司名称查询此数据.对于少数现有的重复项,这将意味着返回并显示多行…虽然这是错误的,但在我们的用例中是可以接受的.目标是在将来防止它.从评论中我可以看出,我必须在存储过程中执行此逻辑.

解决方法

答案是肯定的.您可以使用筛选索引执行此操作(有关文档,请参阅 here).

例如,你可以这样做:

create unique index t_col on t(col) where id > 1000;

这将仅在新行上创建唯一索引,而不是在旧行上创建.这种特殊的表述将允许具有现有值的重复.

如果您只有少量重复项,您可以执行以下操作:

create unique index t_col on t(col) where id not in (<list of ids for duplicate values here>);
原文链接:https://www.f2er.com/mssql/80172.html

猜你在找的MsSQL相关文章