Modificare la chiave primaria di una tabella SQLite

Ho la seguente tabella:

[id,lang,data]

In cui la chiave primaria è id

Voglio modificare la chiave primaria id,lang senza perdere il contenuto della tabella. Qual è la query mi deve eseguire per cambiare

Grazie

InformationsquelleAutor Addev | 2013-06-03



One Reply
  1. 33

    Come per il commento di @GarnerJosh, non è possibile eseguire un singolo comando per cambiare – SQLite non permette di cambiare esistenti strutture di tabella. Invece, creare una nuova tabella con una chiave primaria composta e copiare i dati su:

    CREATE TABLE my_table_copy( 
        id INTEGER, 
        lang INTEGER,
        data TEXT,
        PRIMARY KEY (id, lang)
    );
    INSERT INTO my_table_copy (id, lang, data)
       SELECT id, lang, data FROM my_table;
    DROP TABLE my_table;
    ALTER TABLE my_table_copy RENAME TO my_table;
    • Bella risposta, anche in questo caso, assicurarsi che u non sono chiamata onCreate(db) nuovo dal onUpgrade(), Se si sta facendo così allora l’applicazione sarà di nuovo a cercare di creare la tabella e sarà causa di sqliteException, tabella è già uscita. quindi, per evitare questo solo cadere e creare le tabelle che si desidera modificare. Grazie PinnyM e GamerJosh
    • C’è un informazioni dettagliate su questo metodo in Sqlite documentazione : sqlite.org/lang_altertable.html “a Fare Altri Tipi Di Tabella di Modifiche allo Schema di”

Lascia un commento