Pregunta

¿Cómo puedo añadir una columna adicional a una tabla de base de datos SQLite 2 existente que tiene datos e índices asociados a ella.

Parece que la modificación de tabla de SQL para la que no está disponible en sqlite2?

¿Fue útil?

Solución

Desde el SQLite FAQ :

SQLite ha limitado el apoyo ALTER TABLE que se puede utilizar para agregar una columna al final de una mesa o para cambiar el nombre de una tabla. Si desea realizar cambios más complejos en la estructura de una tabla, tendrá que volver a crear la tabla. Puede guardar los datos existentes en una tabla temporal, eliminar la tabla de edad, crear la nueva tabla, a continuación, copiar los datos de nuevo a partir de la tabla temporal.

Por ejemplo, suponga que tiene una tabla llamada "t1" con los nombres de las columnas "a", "b" y "c" y que desea eliminar la columna "c" de esta tabla. Los pasos siguientes ilustran cómo esto se podría hacer:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

Otros consejos

Puede que no sea - sqlite3 ha estado fuera por un tiempo. Vas a tener que crear otra base de datos con la tabla de la forma que desee y copiar los datos en él. O bien, crear una nueva tabla, copiar los datos, deje caer el ejemplar y sustituirlo por uno nuevo.

No se olvide que en el cuadro gota gotas también asociado desencadenantes.

Antes de que se va a modificar la tabla utilice el comando

.scheme TABLE_TO_MODIFY

que volcar todos los estados actuales, que serán descartados incluyendo los factores desencadenantes que usted necesita para volver a crear.

Saludos,

Elixon

No puedes. No se admite la modificación no trivial de tablas. Lo que tendría que hacer es:

  1. copiar los datos en una tabla temporal caer el viejo
  2. crear la nueva tabla
  3. Copiar datos de la tabla original a la misma
  4. Crea la nueva tabla
  5. Copie los datos de temperatura en la nueva tabla
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top