2009-07-08 4 views

Antwort

5

Vom SqLite FAQ:

SQLite hat ALTER TABLE Unterstützung beschränkt, die eine Spalte mit dem Ende einer Tabelle hinzufügen können oder den Namen einer Tabelle ändern. Wenn Sie komplexere Änderungen in der Struktur einer Tabelle vornehmen möchten, müssen Sie die Tabelle neu erstellen. Sie können vorhandene Daten in einer temporären Tabelle speichern, die alte Tabelle löschen, die neue Tabelle erstellen und die Daten anschließend aus der temporären Tabelle kopieren.

Angenommen, Sie haben eine Tabelle mit dem Namen "t1" mit den Spaltennamen "a", "b" und "c" und möchten die Spalte "c" aus dieser Tabelle löschen. Die folgenden Schritte veranschaulichen, wie dies getan werden könnte:

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

sollten Sie wahrscheinlich Kredite geben: http://www.sqlite.org/faq.html#q11 – knittl

+1

wahrscheinlich sollten Sie 1 Jahr alt entrys Kommentar stoppen – Kovu

+2

Sie Sie sagen, sind hat das nicht wörtlich aus der sqlite FAQ kopiert? –

1

Es könnte nicht sein - sqlite3 ist schon eine Weile weg. Sie müssen eine andere Datenbank mit der Tabelle erstellen, wie Sie es möchten, und die Daten dorthin kopieren. Oder erstellen Sie eine neue Tabelle, kopieren Sie die Daten, legen Sie das Original ab und ersetzen Sie es durch das neue.

0

Sie nicht. Nicht triviale Modifikation von Tabellen wird nicht unterstützt. Was würden Sie tun müssen, ist:

  1. Kopieren Sie die Daten in einer temporären Tabelle löschen die alten
  2. die neue Tabelle
  3. es
  4. Kopieren der Daten aus Original-Tabelle erstellen Erstellen Sie die neue Tabelle Kopieren
  5. die Daten von Temp in die neue Tabelle
1

vergessen Sie nicht, dass DROP TABLE auch assoziierte TRIGGER fällt.

Bevor Sie die Tabelle den Befehl

.scheme TABLE_TO_MODIFY

verwenden ändern werden, die alle aktuellen Aussagen Dump wird, die mit den Auslösern fallen gelassen werden, die Sie brauchen, um neu zu erstellen.

Cheers,

Elixon

Verwandte Themen