Est-il possible de modifier une table en ajoutant de MULTIPLES colonnes dans une seule instruction en sqlite ? Ce qui suit ne fonctionnerait pas.
alter table test add column mycolumn1 text, add column mycolumn2 text;
Est-il possible de modifier une table en ajoutant de MULTIPLES colonnes dans une seule instruction en sqlite ? Ce qui suit ne fonctionnerait pas.
alter table test add column mycolumn1 text, add column mycolumn2 text;
Non, vous devez les ajouter un par un. Consultez le diagramme syntaxique en haut de la page La documentation ALTER TABLE de SQLite :
Il n'y a pas de boucle dans le ADD
de sorte qu'aucune répétition n'est autorisée.
La seule chose possible pour l'instant que j'utilise 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 y a des ; à dessein pour que la requête soit lue sur plusieurs lignes.
Ensuite, j'exécute cette requête et j'obtiens plusieurs colonnes ajoutées à l'exécution... Donc non, pas dans une ligne, mais oui, dans une requête, c'est possible.
La réponse de @mu est "trop court" est juste. En complément, ajout d'une solution de contournement optimisée pour l'ajout de plusieurs colonnes en utilisant l'avantage 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.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.