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.