ALTER TABLE
SQLite soporta un subconjunto limitado de ALTER TABLE. La sentencia ALTER TABLE en SQLite permite al usuario renombrar una tabla o añadir una nueva columna a una tabla existente. No es posible renombrar una columna, eliminarla o añadir o eliminar limitaciones de una tabla.
La sintaxis RENAME TO se usa para renombrar la tabla identificada por [nombre-base-de-datos.]nombre-tabla a nuevo-nombre-tabla. Esta sentencia no puede ser usada para mover una tabla entre diferentes bases de datos, sólo para renombrar tablas dentro de la misma base de datos.
Si la tabla renombrada tiene disparadores o índices, estos permanecen unidos a la tabla después de cambiar de nombre. Sin embargo, si hay cualquier definición de vista, o sentencias ejecutadas por disparadores que se refieran a la tabla renombrada, no serán modificados automáticamente para usar el nuevo nombre de tabla. Si esto fuera necesario, los disparadores o definiciones de vistas deben ser eliminados y vueltos a crear para que usen el nuevo nombre de la tabla.
Si las restricciones de clave foráneas están activas cuando la tabla cambia de nombre, cualquier cláusula REFERENCES en cualquier tabla (ya sea la tabla que cambia de nombre o cualquier otra) que se refiera a la tabla que se está renombrando, será modificada para que se refiera a la tabla renombrada con su nuevo nombre.
La sintaxis de ADD COLUMN se usa para añadir una nueva columna a una tabla existente. La nueva columna se añade siempre al final de la lista de las columnas existentes. La regla columna-def define las características de la nueva columna. La nueva columna puede tener cualquiera de los formatos permitidos en la sentencia CREATE TABLE, con las restricciones siguientes:
- La columna no puede tener la restricción PRIMARY KEY o UNIQUE.
- La columna no puede tener un valor por defecto de CURRENT_TIME, CURRENT_DATE, CURRENT_TIMESTAMP o una expresión entre paréntesis.
- Si se especifica la restricción NOT NULL, entonces la columna debe tener un valor por defecto distinto de NULL.
- Si está permitida la restrucción de claves foráneas y se añade una columna con una columna con la cláusula REFERENCES, la columna debe tener un valor por defecto de NULL.
Hay que tener en cuenta que cuando se añade la restricción CHECK, esa restricción no se comprueba con las filas que había en la tabla previamente. Esto puede hacer que la tabla contenga datos que violen esa restricción CHECK. Futuras versiones de SQLite pueden cambiar para validar la restricción CHECK cuando se añadan.
El tiempo de ejecución de la sentencia ALTER TABLE es independiente de la cantidad de datos en la tabla. La sentencia ALTER TABLE se ejecuta tan rápido en una tabla con 10 millones de filas como en una tabla con una única fila.
Después de que ADD COLUMN se ha aplicado a una base de datos, esta no podrá ser leída por versiones de SQLite 3.1.3 o anteriores.