加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2020-12-30 20:50:09 所属栏目:编程 来源:网络整理
导读:我有一个表,当前在列中有重复的值. 我无法删除这些错误的重复项,但我想阻止添加其他非唯一值. 我可以创建一个不检查现有合规性的UNIQUE吗? 我尝试过使用NOCHECK但是没有成功. 在这种情况下,我有一个表将许可信息与“CompanyName”联系起来 编辑:具有相同“C

我有一个表,当前在列中有重复的值.

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

我可以创建一个不检查现有合规性的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>);

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读