SQLite: ¿alterar el tipo de columna de una tabla?
Estoy comenzando un proyecto que involucra una pequeña base de datos y estoy considerando usar SQLite. Si creo una tabla y definí una de las columnas como texto, pero todos los valores almacenados son números enteros, ¿hay alguna manera de cambiar el tipo de datos de una columna? Estoy usando SQLite Manager y no encuentro una función que me permita hacerlo. ¿Puedo hacerlo usando un comando SQL o es una restricción de SQLite? Probablemente, incluso con esta restricción, se pueda encontrar alguna manera de evitarlo y crear una nueva tabla con los tipos de columnas requeridos y luego importar datos en ella.
Saludos, nick
SQLite no es totalmente compatible con las declaraciones ALTER TABLE. Lo único que puede hacer es cambiar el nombre de una tabla y/o agregar columnas. Si desea cambiar el nombre de una columna, su mejor opción es crear una nueva tabla con los nuevos tipos de datos/nombres de las columnas y eliminar la tabla anterior para cambiar el nombre de la nueva.
Digamos que tiene una tabla y necesita cambiar el nombre de "campo-1" a "campo-2": Primero ==>> cambie el nombre de la tabla anterior:
ALTER TABLE original RENAME TO tmp;
Ahora cree la nueva tabla basada en la tabla anterior pero con el nombre de la columna actualizado:
==>> cree una tabla con las columnas actualizadas
CREATE TABLE original(
field_a INT
, field_b INT
);
Luego copie el contenido frente a la tabla original.
INSERT INTO origignal(field_a, field_b)
SELECT field_a, field_b
FROM tmp;
Por último, suelta la mesa vieja.
DROP TABLE tmp;
No, no existe una forma "rápida" de hacer esto con SQLite. No como puedes hacerlo con MySQL. Tendrá que eliminar la tabla y luego volver a agregarla.
Otra cosa a tener en cuenta es que SQLite es bastante flexible en cuanto al tipo de datos que puedes colocar en cada sección. Aquí hay un enlace que describe los tipos de datos y cómo funcionan: http://www.sqlite.org/datatype3.html
Otra opción podría ser utilizar MySQL si la característica de la que estás hablando es importante para ti. Sigue siendo gratuito y es ideal para proyectos pequeños.