当前位置:首页 > 个人杂谈 > 正文内容

oracle添加唯一约束,历史数据重复

作者: 葛屹肃 | 日期: 2021-10-30 | 分类: 个人杂谈

今天想为oracle中一个表单添加唯一约束,SQL都整理好了,结果执行时,弹出如下的提示,意思是表中有数据重复,不能添加唯一约束,遇到历史数据重复时,该如何处理呢?

oracle添加唯一约束,历史数据重复

当遇到要添加唯一约束的字段历史数据重复时,别无他法,只能先将重复处理好,再添加唯一约束。大家可按如下步骤处理。

步骤一:查询出重复数据

oracle查询重复数据的方法挺多的,最简单就是使用group by

例子:

select bar from
(
select count(bar) as a,bar from table1 group by bar
) where a > 1
)

步骤二:修改重复的数据

查询出重复数据后,然后就去重了,如果不能删除数据的话,就将数据修改下,以下SQL是修改重复数据最大id的的记录,如果重复有2条以上,要执行多次才能,当然,每次执行时,前缀(X1-)要改变,如第二次执行改为X2-

例子:

UPDATE table1 SET bar=’X1-’||bar
WHERE id IN
(
select max(id) from
(
select id,bar from
(
select count(bar) as a,bar from table1 group by bar
) where a > 1
)
) group by bar
)

步骤三:添加唯一约束

当通过上述2步处理好历史数据重复后,就可以添加唯一约束了

例子:

ALTER TABLE table1 –表名
ADD CONSTRAINT BAR_ONLY_CODE_CONS  –约束名
UNIQUE (bar);  –字段

好了,通过上述3步后,我们的目标已经达到,为table1添加了唯一约束,以后执行insert时,如果bar字段数据重复,将会出现异常,从数据库层面杜绝了bar出现重复数据。

版权声明:本文由〖葛屹肃〗发布,转载请注明出处!
文章链接:https://www.geyisu.com/2234.html

  • 评论:(0)

已有 0 位网友发表了一针见血的评论,你还等什么?

◎欢迎大家参与讨论