sqlite alter table fügt in einer einzelnen Anweisung MEHRERE Spalten hinzu


159

Ist es möglich, die Tabelle MULTIPLE Spalten in einer einzelnen Anweisung in SQLite hinzuzufügen? Folgendes würde nicht funktionieren.

Tabellentest ändern Spalte mycolumn1 Text hinzufügen, Spalte mycolumn2 Text hinzufügen;

Antworten:


311

Nein, Sie müssen sie einzeln hinzufügen. Weitere Informationen finden Sie im Syntaxdiagramm oben in der ALTER TABLE-Dokumentation von SQLite :

ALTER TABLE-Syntax

Es gibt keine Schleife in der ADDVerzweigung, daher ist keine Wiederholung zulässig.


12
@JoshPinter: Danke, aber ich denke, die Syntaxdiagramme in den SQLite-Dokumenten verdienen viel Anerkennung. Die Syntaxdiagramme sind großartig. Jeder sollte sie in seinen Dokumenten verwenden.
Mu ist zu kurz

Diese Antwort war wirklich hilfreich. Danke dir.
Julian Alberto

0

Die Antwort von @mu ist zu kurz 'ist richtig. Hinzufügen einer optimierten Problemumgehung zum Hinzufügen mehrerer Spalten unter Verwendung der Vorteile von Transaktionen in SQL.

String alterTableQuery = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN ";
List<String> newColumns = ..// Your new columns

db.beginTransaction();
for (String column : newColumns){
    db.execSQL(alterTableQuery + column +  " VARCHAR");
}
db.setTransactionSuccessful();
db.endTransaction();

Ich hoffe das hilft jemandem.


0

Das einzige, was ich bisher verwenden kann, ist

BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT

Beachten Sie, dass es gibt; absichtlich, damit die Abfrage als mehrere Zeilen gelesen wird.

Dann führe ich diese Abfrage aus und füge beim Ausführen mehrere Spalten hinzu ... Also nein, nicht in einer Zeile, aber ja in einer Abfrage ist es möglich.


-16

Tabellentest ändern Spalte hinzufügen mycolumn1 Text; Tabellentest ändern Spalte hinzufügen mycolumn2 Text;

Verwenden Sie die oben definierte Abfrage


6
Das ist keine einzelne Anweisung - alles, was ;als Trennzeichen dient, muss als mehrere Anweisungen ausgeführt werden, und es spielt oft eine Rolle. Die andere Antwort hat bereits gezeigt, dass das, was das OP verlangt, jedoch unmöglich ist.
o11c
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.