Oracle/PLSQL: mensaje de error ORA-01452

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);