Est-il possible de modifier la table et d'ajouter PLUSIEURS colonnes dans une seule instruction dans sqlite? Ce qui suit ne fonctionnerait pas.
modifier le test de table ajouter la colonne mycolumn1 text, ajouter la colonne mycolumn2 text;
Est-il possible de modifier la table et d'ajouter PLUSIEURS colonnes dans une seule instruction dans sqlite? Ce qui suit ne fonctionnerait pas.
modifier le test de table ajouter la colonne mycolumn1 text, ajouter la colonne mycolumn2 text;
Réponses:
Non, vous devez les ajouter un par un. Consultez le diagramme de syntaxe en haut de la documentation ALTER TABLE de SQLite :
Il n'y a pas de boucle dans la ADD
branche donc aucune répétition n'est autorisée.
La réponse de @mu est trop courte »est juste. En plus, ajouter une solution de contournement optimisée pour ajouter plusieurs colonnes en utilisant les avantages des transactions en 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();
J'espère que cela aidera quelqu'un.
La seule chose que j'utilise à ce jour est
BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT
Notez qu'il existe; exprès pour que la requête soit lue sur plusieurs lignes.
Ensuite, j'exécute cette requête et j'ajoute plusieurs colonnes en cours d'exécution ... Donc non pas en une seule ligne, mais oui en une seule requête, c'est possible.
alter table test add column mycolumn1 text; alter table test add column mycolumn2 text;
utiliser la requête redéfinie ci-dessus
;
un séparateur doit être exécuté comme plusieurs instructions, et cela a souvent de l'importance. L'autre réponse a déjà démontré que ce que le PO demande est impossible, cependant.