2009-07-08 7 views

Répondre

5

De l'SqLite FAQ:

SQLite a limité ALTER TABLE soutien que vous pouvez utiliser pour ajouter une colonne à la fin d'une table ou de changer le nom d'une table. Si vous voulez faire des changements plus complexes dans la structure d'une table, vous devrez recréer la table. Vous pouvez enregistrer les données existantes dans une table temporaire, supprimer l'ancienne table, créer la nouvelle table, puis recopier les données depuis la table temporaire. Par exemple, supposons que vous ayez une table nommée "t1" avec les noms de colonne "a", "b" et "c" et que vous souhaitiez supprimer la colonne "c" de cette table. Les étapes suivantes illustrent comment cela peut être fait:

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; 
+2

vous devriez probablement donner des crédits: http://www.sqlite.org/faq.html#q11 – knittl

+1

probablement vous devriez cesser de commenter de 1 an entrys – Kovu

+2

Êtes-vous vous dire did not copy this verbatim de la FAQ sqlite? –

1

Ce n'est peut-être pas - sqlite3 est sorti depuis un moment. Vous devrez créer une autre base de données avec la table comme vous le souhaitez et y copier les données. Ou, créez une nouvelle table, copiez les données, déposez l'original et remplacez-le par le nouveau.

0

Vous n'avez pas. La modification non triviale des tables n'est pas supportée. Ce que vous devez faire est:

  1. Copiez les données sur une table temporaire tomber l'ancien
  2. créer la nouvelle table
  3. Copiez les données de votre table originale, il
  4. Créer la nouvelle table
  5. Copiez les données de température dans la nouvelle table
1

ne pas oublier que DROP TABLE diminue également triggers associés.

Avant que vous allez modifier la table, utilisez la commande

.scheme TABLE_TO_MODIFY

qui décharge toutes les déclarations actuelles qui seront supprimés, y compris les éléments déclencheurs que vous devez recréer.

Cheers,

Elixon

Questions connexes