Oracle/PLSQL: mensaje de error ORA-01440

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

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

describir

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

  • ORA-01440: la columna que se modificará debe ser nula para reducir la precisión o la escala

razón

Intentó una instrucción ALTER TABLE MODIFY en una columna numérica para reducir la precisión o la escala, pero la columna contiene datos. Solo puede modificar columnas numéricas cuyos valores sean todos NULL.

resolver

Las opciones para resolver este error de Oracle incluyen:

Opción 1

Ejecute una instrucción UPDATE para cambiar todos los valores de la columna a NULL.

Opcion 2

Ejecute una instrucción DELETE para eliminar todas las filas de la tabla.

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

CREATE TABLE suppliers
( supplier_id number(5),
  discount number(5,2)
);

Luego ejecute la siguiente instrucción INSERT:

INSERT into suppliers
(supplier_id, discount)
VALUES (12345, 30.25);

Intenta ejecutar la siguiente instrucción ALTER TABLE:

ALTER TABLE suppliers
 MODIFY discount number(4,2);

Recibirá el siguiente mensaje de error:

Puede corregir el error usando cualquiera de las siguientes soluciones:

Solución #1

Puede actualizar la columna de descuento a todos los valores NULL. Esto solo funciona si el campo de descuento acepta valores NULL.

UPDATE suppliers
SET discount = NULL;

Solución #2

Puede eliminar todas las entradas de la tabla de proveedores.

DELETE FROM suppliers;

Si decide eliminar todas las entradas de la tabla de proveedores, es posible que desee asegurarse de hacer una copia de seguridad de sus datos.