Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: mensaje de error ORA-01452
Aprenda por qué y cómo resolver los mensajes de error ORA-01452 en Oracle.
describir
Cuando encuentra un error ORA-01452, aparece el siguiente mensaje de error:
- ORA-01452: no se puede crear un índice único; se encontró una clave duplicada
razón
Intentó ejecutar una declaración CREATE UNIQUE INDEX en una o más columnas que contienen valores duplicados.
resolver
Las opciones para resolver este error de Oracle incluyen:
Opción 1
Si no es necesario que las entradas sean únicas, puede eliminar la palabra clave ÚNICA de la declaración CREATE UNIQUE INDEX y volver a ejecutar el comando.
Opcion 2
Si las entradas deben ser únicas, elimine todas las entradas que crean valores duplicados de la tabla. Luego vuelva a ejecutar su instrucción CREATE UNIQUE INDEX.
Por ejemplo, si tiene una tabla llamada proveedores, definida de la siguiente manera:
CREATE TABLE suppliers ( supplier_name varchar2(50), city varchar2(35) );
Luego ejecute la siguiente instrucción INSERT:
INSERT INTO suppliers (supplier_name, city) VALUES ('IBM', 'New York'); INSERT INTO suppliers (supplier_name, city) VALUES ('IBM', 'Silicon Valley');
Luego intenta crear un índice único con la siguiente declaración:
CREATE UNIQUE INDEX supplier_idx ON suppliers (supplier_name);
Recibirá el siguiente mensaje de error:
Puede corregir esto creando INDEX como un índice no único.
CREATE INDEX supplier_idx ON suppliers (supplier_name);
Como alternativa, puede eliminar una entrada en la tabla de proveedores de IBM y volver a ejecutar su sentencia CREATE UNIQUE INDEX. Por ejemplo:
DELETE FROM suppliers WHERE supplier_name="IBM" AND city = 'Silicon Valley'; CREATE UNIQUE INDEX supplier_idx ON suppliers (supplier_name);