Estructura · microlección

Eliminar columnas con ALTER TABLE

Eliminar una columna borra sus datos y puede romper dependencias; primero demuestra que ya no es necesaria.

Lectura: 5–7 minEjemplo ejecutadoLista de seguridad
Contenido de esta guía

Qué elimina DROP COLUMN

ALTER TABLE ... DROP COLUMN retira la definición de una columna y sus valores de la tabla. No es equivalente a poner todos los valores a NULL: después del cambio, la columna deja de existir.

La operación puede exigir reescribir la tabla, adquirir bloqueos o rechazar el cambio si la columna participa en claves, índices, restricciones, vistas, columnas generadas o disparadores.

Comprobaciones previas

  • Busca lecturas y escrituras del nombre de la columna en aplicaciones, consultas e informes.
  • Revisa claves, índices, restricciones, vistas y disparadores.
  • Decide si los datos deben archivarse antes de eliminarlos.
  • Mide el tamaño de la tabla y el posible bloqueo.
  • Prepara una copia de seguridad y un plan de reversión.

Sintaxis y ejemplo

Eliminar una columna sin dependencias
CREATE TABLE productos_demo (
  id INTEGER PRIMARY KEY,
  nombre TEXT NOT NULL,
  nota_interna TEXT
);

INSERT INTO productos_demo (id, nombre, nota_interna)
VALUES (1, 'Ratón', 'revisar embalaje');

ALTER TABLE productos_demo
DROP COLUMN nota_interna;

SELECT *
FROM productos_demo;
Resultado comprobado en SQLite
idnombre
1Ratón

El valor «revisar embalaje» desaparece junto con la columna. Para recuperarlo, necesitarías una copia o una migración inversa que conserve esos datos en otro lugar.

Qué ocurre con las dependencias

PostgreSQL distingue entre RESTRICT, que rechaza el cambio si existen objetos dependientes, y CASCADE, que también elimina dependencias. Utilizar CASCADE sin revisar qué desaparecerá puede ampliar mucho el alcance de la operación.

SQLite rechaza DROP COLUMN cuando la columna forma parte de una clave primaria, tiene una restricción UNIQUE, está indexada o aparece en varias clases de objetos del esquema. MySQL y SQL Server también tienen reglas y costes propios.

Errores frecuentes

Eliminar antes de dejar de usar

Una estrategia más segura es separar el cambio en etapas: dejar de escribir la columna, migrar o archivar los datos, desplegar aplicaciones que ya no la lean y eliminarla en una versión posterior.

No uses SELECT * en aplicaciones que dependen del orden de columnas. Un cambio de esquema puede alterar la forma del resultado incluso cuando el código no menciona la columna eliminada.

Comprueba lo aprendido

Intermedia · decisión segura

Retira una columna temporal

La tabla clientes_demo contiene codigo_importacion, que ya no utiliza ninguna aplicación. Escribe la sentencia de eliminación y una consulta para comprobar las columnas restantes.

Compatibilidad entre motores

PostgreSQL, MySQL, SQL Server y SQLite actual admiten eliminar columnas, pero no comparten todas las opciones ni el mismo tratamiento de dependencias. SQLite incorporó DROP COLUMN en versiones modernas y lo rechaza si quedan referencias incompatibles en el esquema. En tablas grandes, investiga además si el motor realiza una operación instantánea, en línea o una reescritura costosa.

Qué debes recordar

  • La eliminación borra datos y cambia el contrato del esquema.
  • Localiza dependencias antes de ejecutar.
  • Prefiere una retirada por etapas en producción.
  • No uses opciones en cascada sin inspeccionar su alcance.

Conceptos relacionados

Fuentes técnicas consultadas