问题描述:

创建唯一索引时,出现ORA-01452报错。

问题分析

出现该错误,可能是创建唯一索引的那一列有重复数据,即数据库中的已存在数据不符合要创建索引的条件,导致创建索引的时候出现找到重复关键字的错误。

问题处理

例 :表test中有两个字段 id,name,创建唯一联合索引,出现上面的错误,可通过下面的语句删除重复的记录并在重复记录中只保留最小rowid的记录。

DELETE FROM test A WHERE (A.ID,A.NAME) IN (SELECT ID,NAME FROM test GROUP BY ID,NAME HAVING COUNT(*) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM test GROUP BY ID,NAME HAVING COUNT(*)>1);

commit;

执行完上述语句后,再次执行创建唯一索引的语句就不会报错了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐