ORA-01452: 无法 CREATE UNIQUE INDEX; 找到重复的关键字
问题描述:创建唯一索引时,出现ORA-01452报错。问题分析出现该错误,可能是创建唯一索引的那一列有重复数据,即数据库中的已存在数据不符合要创建索引的条件,导致创建索引的时候出现找到重复关键字的错误。问题处理例 :表test中有两个字段 id,name,创建唯一联合索引,出现上面的错误,可通过下面的语句删除重复的记录并在重复记录中只保留最小rowid的记录。DELETE FROM test A
·
问题描述:
创建唯一索引时,出现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;
执行完上述语句后,再次执行创建唯一索引的语句就不会报错了。
更多推荐
已为社区贡献27条内容
所有评论(0)