ALTER TABLE tbl_status ADD COLUMN status_default TEXT;
http://www.sqlite.org/lang_altertable.html
Dicho esto, la adición de columnas en SQLite es limitado. No puede agregar una columna en cualquier lugar, pero después de la última columna de su tabla.
En cuanto a comprobar si la columna ya existe, PRAGMA table_info(tbl_status);
devolverá una tabla que enumera las diversas columnas de su tabla.
Add On:
He estado usando una estrategia en el diseño de la base de datos que me permite distinguir qué modificaciones son necesarias. Para esto, necesitará una nueva tabla (llámelo DBInfo
), con un campo (Entero, llámelo SchemaVersion
). Alternativamente, también hay un valor interno en SQLite llamado user_version
, que se puede establecer con un comando PRAGMA
. Su código puede, al inicio del programa, verificar el número de versión del esquema y aplicar los cambios en consecuencia, una versión a la vez.
Suponga una función llamada UpdateDBSchema()
. Esta función comprobará su versión de esquema de base de datos, manejará DBInfo que no está allí y determinará que la base de datos está en la versión 0. El resto de esta función podría ser simplemente un interruptor grande con diferentes versiones, anidadas en un bucle (u otra estructura disponible) a su plataforma de elección).
Así que para esta primera versión, tienen una función UpgradeDBVersion0To1()
, lo que creará esta nueva tabla (DBInfo
), añadir su campo status_default
y establezca SchemaVersion
a 1. En su código, añadir una constante que indica la última versión de esquema, diga LATEST_DB_VERSION
, y establézcalo en 1. De esa manera, su código y su base de datos tienen una versión de esquema, y usted sabe que necesita sincronizarlos si no son iguales.
Cuando necesite hacer otro cambio en su esquema, establezca la constante LATEST_DB_VERSION
en 2 y cree una nueva función UpgradeDBVersion1To2()
que realizará los cambios necesarios.
De esta manera, su programa se puede portar fácilmente, se puede conectar y actualizar una base de datos antigua, etc.
¿Alguna razón por la que no ha comprobado la sintaxis de SQLite SQL en http://www.sqlite.org? La sintaxis del comando ALTER TABLE para agregar una nueva columna no tiene ningún tipo de modificadores IF NOT EXISTS, lo que significa que tendrá que manejar la excepción/error en su propio código. –
Adam, he actualizado mi respuesta. Por favor ver más abajo. – MPelletier