赞
踩
此问题因数据库已经是有数据的,创建唯一索引的那一列有重复的数据,即数据库中的已存在数据不符合要创建索引的条件,导致创建索引的时候会出现ORA-01452找到重复关键字的错误。
解决:
例 :表中有两个字段 id,year,创建唯一联合索引,出现上面的错误,可通过下面的语句删除重复的记录并在重复记录中只保留最小rowid的记录.
DELETE FROM 表名 A WHERE (A.ID,A.YEAR) IN (SELECT ID,YEAR FROM 表名 GROUP BY ID,YEAR HAVING COUNT(*) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表名 GROUP BY ID,YEAR HAVING COUNT(*)>1);
commit;
执行完上述语句后,再次执行创建唯一索引的语句就不会报错了.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。