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;
user775187
quelle

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.

mu ist zu kurz
quelle
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.

Arun PM
quelle
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.

Michiel Krol
quelle
-16

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

Verwenden Sie die oben definierte Abfrage

anand arun
quelle
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