2012-03-30 20 views
9

Come si modifica il valore predefinito di una colonna esistente in una tabella in sqlite3?sqlite3 cambia colonna valore predefinito

Ho una tabella denominata notes con una colonna booleana denominata hidden. L'impostazione predefinita è true, voglio impostarla su false.

risposta

20

Non credo che sia possibile senza sostituire l'intero tavolo. Dal fine manual:

SQL caratteristiche che SQLite non Implementare

Supporto completo ALTER TABLE
solo la tabella rinominare e ADD varianti COLUMN del comando ALTER TABLE sono supportati. Altri tipi di operazioni ALTER TABLE come DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT e così via vengono omessi.

Quindi non c'è modo di modificare una colonna esistente in SQLite. Penso che dovrai creare una nuova tabella con il valore predefinito appropriato per hidden, copiare tutti i dati, rilasciare la tabella originale notes e quindi rename the new one.

SQLite rimane snello omettendo intenzionalmente molte funzionalità.

+1

Un punto potrebbe aiutare a questo proposito. Prima di eseguire la 'drop table ' assicurati di eseguire '.dump' e ottenere anche dump dello schema e dati. È quindi possibile utilizzarlo per creare rapidamente lo schema modificato e importare i dati. – codarrior

0

Il browser del database SQLite consente di rilasciare colonne, quindi è possibile rilasciare la colonna e quindi aggiungere manualmente la colonna con il valore predefinito utilizzando lo strumento da riga di comando sqlite3.

+0

Sfortunatamente per realizzare questo probabilmente esegue tutti i tipi di imbrogli sotto la cappa come creare un tavolo temporaneo: | http://stackoverflow.com/q/805363/32453 – rogerdpack

Problemi correlati