Oracle/PLSQL: mensaje de error ORA-02437

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-02437

Aprenda por qué y cómo resolver los mensajes de error ORA-02437 en Oracle.

describir

Cuando encuentra un error ORA-02437, aparece el siguiente mensaje de error:

  • ORA-02437: no se puede verificar <名称> – Violación de la clave principal

razón

Intentó habilitar una restricción de clave principal, pero una columna en la clave principal contiene valores NULL o duplicados.

resolver

Las opciones para resolver este error de Oracle incluyen:

Opción 1

Este error ocurre cuando intenta habilitar la clave principal cuando tiene datos en la tabla y las columnas que componen la clave principal contienen valores NULL.

Por ejemplo, si creó la siguiente tabla:

CREATE TABLE supplier
( supplier_id numeric(10),
  supplier_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);

Luego, la clave principal se deshabilita de la siguiente manera:

ALTER TABLE supplier;
disable CONSTRAINT supplier_pk;

Luego inserte los datos en la tabla de proveedores con el valor de proveedor ID NULL de la siguiente manera:

INSERT INTO supplier
( supplier_id, supplier_name )
VALUES
(NULL, 'IBM');

Luego intenta habilitar las claves principales:

ALTER TABLE supplier
enable CONSTRAINT supplier_pk;

Recibirá el siguiente mensaje de error:

Puede corregir este error eliminando registros de la tabla de proveedores donde la columna id_proveedor contiene valores NULOS, o puede asignar valores NO NULOS a la columna id_proveedor.

Opcion 2

Este error ocurre cuando intenta habilitar la clave principal cuando tiene datos en la tabla y las columnas que componen la clave principal contienen duplicados.

Por ejemplo, si creó la siguiente tabla:

CREATE TABLE supplier
( supplier_id numeric(10),
  supplier_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);

Luego, la clave principal se deshabilita de la siguiente manera:

ALTER TABLE supplier
 DISABLE CONSTRAINT supplier_pk;

Luego inserte los datos en la tabla de proveedores para crear duplicados en el campo id_proveedor de la siguiente manera:

INSERT INTO supplier
( supplier_id, supplier_name )
VALUES
(1, 'IBM');

INSERT INTO supplier
( supplier_id, supplier_name )
VALUES
(1, 'Microsoft');

Luego intenta habilitar las claves principales:

ALTER TABLE supplier
 ENABLE CONSTRAINT supplier_pk;

Recibirá el siguiente mensaje de error:

Puede corregir este error eliminando los registros duplicados de la tabla de proveedores.