sqlite alter table agrega columnas MÚLTIPLES en una sola declaración


159

¿Es posible modificar la tabla agregar columnas MÚLTIPLES en una sola declaración en sqlite? Lo siguiente no funcionaría.

alterar prueba de tabla agregar columna mycolumn1 texto, agregar columna mycolumn2 texto;

Respuestas:


311

No, tienes que agregarlos uno a la vez. Vea el diagrama de sintaxis en la parte superior de la documentación ALTER TABLE de SQLite :

ALTA TABLA Sintaxis

No hay bucle en la ADDrama, por lo que no se permite la repetición.


12
@JoshPinter: Gracias pero creo que los diagramas de sintaxis en los documentos de SQLite merecen mucho crédito, los diagramas de sintaxis son geniales, todos deberían usarlos en sus documentos.
mu es demasiado corto

Esta respuesta fue realmente útil. Gracias.
Julian Alberto

0

La respuesta de @mu es demasiado corta 'es correcta. Como extra, agregar una solución alternativa optimizada para agregar múltiples columnas utilizando el beneficio de las transacciones 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();

Espero que esto ayude a alguien.


0

Lo único que puedo usar hasta ahora es

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

Tenga en cuenta que hay; con el propósito de hacer que la consulta se lea como varias líneas.

Luego ejecuto esta consulta y agrego varias columnas al ejecutar ... Entonces no, no en una línea, pero sí en una consulta es posible.


-16

alter table test agregar columna mycolumn1 text; alterar prueba de tabla agregar columna mycolumn2 text;

use la consulta redifinada anterior


66
Esa no es una sola declaración: cualquier cosa con ;un separador debe ejecutarse como varias declaraciones, y a menudo es importante. Sin embargo, la otra respuesta ya demostró que lo que pide el OP es imposible.
o11c
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.