Saltar al contenido

¿Cómo cambio el nombre de una columna en una tabla de base de datos SQLite?

Solución:

Supongamos que tiene una tabla y necesita cambiar el nombre de “colb” a “col_b”:

Primero, cambia el nombre de la tabla anterior:

ALTER TABLE orig_table_name RENAME TO tmp_table_name;

Luego cree la nueva tabla, basada en la tabla anterior pero con el nombre de columna actualizado:

CREATE TABLE orig_table_name (
  col_a INT
, col_b INT
);

Luego copie el contenido frente a la tabla original.

INSERT INTO orig_table_name(col_a, col_b)
SELECT col_a, colb
FROM tmp_table_name;

Por último, deja la mesa vieja.

DROP TABLE tmp_table_name;

Envolviendo todo esto en un BEGIN TRANSACTION; y COMMIT; también es probablemente una buena idea.

Esto se acaba de arreglar con 2018-09-15 (3.25.0)

Mejoras el ALTER TABLE mando:

  • Agregue soporte para cambiar el nombre de columnas dentro de una tabla usando ALTER TABLE mesa RENAME COLUMN oldname TO newname.
  • Corrija la función de cambio de nombre de la tabla para que también actualice las referencias a la tabla renombrada en desencadenadores y vistas.

Puede encontrar la nueva sintaxis documentada en ALTER TABLE

los RENAME COLUMN TO la sintaxis cambia el nombre-columna de la tabla nombre-tabla a nombre-nueva-columna. El nombre de la columna se cambia tanto dentro de la propia definición de la tabla como dentro de todos los índices, desencadenadores y vistas que hacen referencia a la columna. Si el cambio de nombre de la columna da como resultado una ambigüedad semántica en un disparador o vista, entonces el RENAME COLUMN falla con un error y no se aplican cambios.

ingrese la descripción de la imagen aquí


Fuente de la imagen: https://www.sqlite.org/images/syntax/alter-table-stmt.gif

Ejemplo:

CREATE TABLE tab AS SELECT 1 AS c;

SELECT * FROM tab;

ALTER TABLE tab RENAME COLUMN c to c_new;

SELECT * FROM tab;

Demostración de db-fiddle.com


Soporte de Android

Al momento de escribir, La API 27 de Android utiliza la versión 3.19 del paquete SQLite.

Basado en la versión actual que está usando Android y que esta actualización viene en la versión 3.25.0 de SQLite, diría que tiene que esperar un poco (aproximadamente API 33) antes de que se agregue soporte para esto a Android.

E incluso entonces, si necesita admitir versiones anteriores a la API 33, no podrá usar esto.

Investigando, encontré esta herramienta gráfica multiplataforma (Linux | Mac | Windows) llamada DB Browser para SQLite que realmente permite cambiar el nombre de las columnas de una manera muy fácil de usar.

Editar | Modificar tabla | Seleccionar tabla | Editar campo. ¡Clic clic! ¡Voila!

Sin embargo, si alguien quiere compartir una forma programática de hacer esto, ¡me complacerá saberlo!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *