Domanda

Come faccio ad aggiungere una colonna aggiuntiva a una tabella di database SQLite 2 esistente che dispone di dati e gli indici ad esso associati.

Sembra che la tabella SQL alter per questo non è disponibile in sqlite2?

È stato utile?

Soluzione

SQLite FAQ :

SQLite ha un supporto limitato ALTER TABLE che è possibile utilizzare per aggiungere una colonna alla fine di una tabella o per cambiare il nome di una tabella. Se si desidera apportare modifiche più complesse nella struttura di una tabella, si dovrà ricreare la tabella. È possibile salvare i dati esistenti in una tabella temporanea, eliminare la vecchia tabella, creare la nuova tabella, quindi copiare i dati indietro nel dalla tabella temporanea.

Ad esempio, si supponga di avere una tabella denominata "T1" con i nomi delle colonne "a", "b" e "c" e che si desidera eliminare colonna "c" da questa tabella. I passaggi seguenti illustrano come questo potrebbe essere fatto:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

Altri suggerimenti

Potrebbe non essere - sqlite3 è stato fuori per un po '. Dovrete creare un altro DB con la tabella nel modo desiderato e copiare i dati su di esso. In alternativa, creare una nuova tabella, copiare i dati, eliminare l'originale e sostituirlo con quello nuovo.

Non dimenticate che TABELLA gocce goccia anche associato trigger.

Prima che si sta per modificare la tabella utilizzare il comando

.scheme TABLE_TO_MODIFY

che il dump tutte le dichiarazioni attuali che verranno eliminati compresi i trigger che è necessario ricreare.

Saluti,

Elixon

Non lo sai. Non banale modifica delle tabelle non è supportato. Che cosa si avrebbe bisogno di fare è:

  1. copiare i dati in una tabella temporanea cadere il vecchio
  2. creare la nuova tabella
  3. Copia dei dati dalla tabella originale ad esso
  4. Creare la nuova tabella
  5. Copiare i dati dal temporanea nella nuova tabella
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top