ALTER TABLE tbl_status ADD COLUMN status_default TEXT;
http://www.sqlite.org/lang_altertable.html
Detto, aggiungendo colonne SQLite è limitata. Non è possibile aggiungere una colonna ovunque ma dopo l'ultima colonna nella tabella.
Come per verificare se la colonna esiste già, PRAGMA table_info(tbl_status);
restituirà una tabella che elenca le varie colonne della tabella.
ADD ON:
ho usato una strategia di progettazione di database che mi permette di distinguere quali sono richieste modifiche. Per questo, è necessario un nuovo tavolo (chiamarlo DBInfo
), con un campo (Intero, chiamarlo SchemaVersion
). In alternativa, esiste anche un valore interno in SQLite chiamato user_version
, che può essere impostato con un comando PRAGMA
. Il codice può, all'avvio del programma, verificare il numero di versione dello schema e applicare le modifiche di conseguenza, una versione alla volta.
Supponiamo una funzione denominata UpdateDBSchema()
. Questa funzione controllerà la versione dello schema del database, manterrà DBInfo non presente e determinerà che il database sia nella versione 0. Il resto di questa funzione potrebbe essere solo un grande switch con diverse versioni, annidato in un ciclo (o altra struttura disponibile alla tua piattaforma di scelta).
Così, per questa prima versione, hanno una funzione di UpgradeDBVersion0To1()
, che creerà questa nuova tabella (DBInfo
), aggiungere il campo status_default
, e impostare SchemaVersion
a 1. Nel codice, aggiungere una costante che indica l'ultima versione dello schema, dì LATEST_DB_VERSION
e impostalo su 1. In questo modo, il tuo codice e il tuo database hanno una versione dello schema e sai che devi sincronizzarli se non sono uguali.
Quando è necessario apportare un'altra modifica allo schema, impostare la costante LATEST_DB_VERSION
su 2 e creare una nuova funzione UpgradeDBVersion1To2()
che eseguirà le modifiche richieste.
In questo modo, è possibile eseguire facilmente il porting del programma, connettersi e aggiornare un vecchio database, ecc.
Qualsiasi motivo per cui non è stata verificata la sintassi SQLite SQL in http://www.sqlite.org? La sintassi del comando ALTER TABLE per aggiungere una nuova colonna non ha alcun tipo di modificatori IF NOT EXISTS, il che significa che dovrai solo gestire l'eccezione/errore nel tuo codice. –
Adam, ho aggiornato la mia risposta. Vedi sotto. – MPelletier