Oracle

Cómo modificar una columna NOT NULL a NULL

Por : Jhons_1101
2018-10-04
Tags :
Siempre nos hemos hecho esta pregunta: ¿Cómo puedo modificar una columna NOT NULL para permitir valores NULL? sin afectar lo que ya existe en la base de datos.

Debemos entonces borrar el campo y crearlo de nuevo.??
No, nunca...

Oracle nos permite cambiar una tabla con una restricción NOT NULL a una restricción NULL con una declaración "Alter table".
Veamos..
compartir en facebook compartir en Google compartir en Twitter compartir en Blogger compartir como código embebido compartir la url

-- alteramos la estructura de la tabla
alter table
   nombre_tabla
modify
   (nom_columna NULL);


-- EJEMPLO
ALTER TABLE
  ESTUDIANTES
MODIFY
  (COD_CIUDAD NULL);

Modificar columna NULL en PL/SQL

Paso seguido verificamos la estructura de la tabla con el siguiente comando...

Describe nombre_tabla;


Si miramos la sección de pantallazos podemos ver la descripción de la tabla como ha quedado..
En donde podemos ver que la columna de la tabla ESTUDIANTES ha cambiado y ahora permite valores nulos.


tabla estudiente en PL/SQL


Si tratamos de modificar un campo que ya es NULL a NULL, este nos arrojará un error ORA-01451: column to be modified to NULL cannot be modified to NULL.
La causa, se intentó ejecutar ALTER TABLE MODIFY intentando cambiar una columna para permitir valores NULL, pero la columna ya permite valores NULL o la columna se usa en una clave principal o restricción de verificación y no puede aceptar valores NULL




Si requerimos hacer lo contrario, pasar de un campo NULL a NOT NULL, el proceso es algo más delicado, ya que mostrará error ORA 02296 "cannot enable (%s.%s) - null values found" al tratar de alterar los valores nulos a obligatorios. Ver siguiente imagen
Pero si asignamos un valor por defecto (Que no sea nulo), este nos permitirá alterar la tabla sin complicaciones.
Veamos...

error de null a not null en PL/SQL

alter table
  nombre_tabla
modify (nom_columna tipo_dato() DEFAULT 0);

-- EJEMPLO
ALTER TABLE
  ESTUDIANTES
MODIFY (COD_CIUDAD NUMBER(10) DEFAULT 0);

-- IMPORTANTE:
-- Se se va a cambiar el tamaño de la columna... debemos de tener en cuenta
-- que puede arrojarnos este error. ORA-01440: la columna que desea  modificar 
-- debe estar vacía para disminuir la precisión o escala


Después de ello, verificamos con el Describe.

-- validamos si el campo que era NULL, ahora está como obligatorio.
Describe nombre_tabla;


Siempre hacer backup de los datos, antes de ejecutar una sentencia Alter.
Es mejor evitar dolores de cabeza.




Si este contenido te fue útil, no olvides compartirlo en redes sociales, Considéralo. Puede ser la manera de agradecer!


Agrega tu comentario...

Puedes utilizar etiquetas <pre></pre>, <p></p>, <div></div>, + (Nombre usuario, para responderle a alguien)

IlCSDpe





Este post no tiene comentarios, sé el primero en hacerlo

Sentencia básica para modificar una columna de una tabla en Oracle


ALTER TABLE MODIFY



Describe de la Tabla ESTUDIANTES después de la modificación.

tabla estudiante curso PL/SQL oracle



Error ORA 02296 "cannot enable (%s.%s) - null values found


Error de campo NULL  NOT NULL wn oracle




Unete al grupo de whatsApp +57 316 392 6456

Sigue el grupo en facebook

Siguenos.....