Oracle/PLSQL: mensaje de error ORA-01451

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

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

describir

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

  • ORA-01451: la columna que se modificará a NULL no se puede modificar a NULL

razón

Intentó ALTER TABLE MODIFY para intentar alterar una columna para permitir valores NULL, pero la columna ya permite valores NULL, o la columna se usa para una clave principal o una restricción de verificación y no puede aceptar valores NULL.

resolver

Las opciones para resolver este error de Oracle incluyen:

Opción 1

Suelte una clave principal o verifique el índice de restricción que le impide cambiar una columna para permitir valores NULL.

Opcion 2

La columna ya permite valores NULL y no se requiere ninguna acción.

Escenario 1

Por ejemplo, si tiene una tabla llamada proveedores, definida de la siguiente manera:

CREATE TABLE suppliers
( supplier_name varchar2(50) NOT NULL,
  city varchar2(35),
  state varchar2(2),
  zip varchar2(10),
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_name)
);

Luego ejecute la siguiente instrucción ALTER TABLE

ALTER TABLE suppliers
 MODIFY supplier_name NULL;

Recibirá el siguiente mensaje de error:

Puede corregir el error eliminando la clave principal de la tabla de proveedores:

ALTER TABLE suppliers
 DROP CONSTRAINT suppliers_pk;

El campo nombre_proveedor ahora se definirá para permitir valores NULL.

Escenario #2

Por ejemplo, si tiene una tabla llamada proveedores, definida de la siguiente manera:

CREATE TABLE suppliers
( supplier_name varchar2(50),
  city varchar2(35),
  state varchar2(2),
  zip varchar2(10)
);

Luego ejecute la siguiente instrucción ALTER TABLE

ALTER TABLE suppliers
 MODIFY supplier_name NULL;

Recibirá el siguiente mensaje de error:

Este error se produce porque ha definido la columna Nombre del proveedor para permitir valores NULL, por lo que no se requiere ninguna acción.