¿Cómo modifico la columna en sqlite? Esto es enPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Creo que no hay ALTER COLUMN en sqlite, solo se admite ALTER TABLE.
¿Alguna idea? ¡Gracias!
¿Cómo modifico la columna en sqlite? Esto es enPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
Creo que no hay ALTER COLUMN en sqlite, solo se admite ALTER TABLE.
¿Alguna idea? ¡Gracias!
Respuestas:
No hay ALTER COLUMN en sqlite.
Creo que tu única opción es:
Esta otra respuesta de Stackoverflow explica el proceso en detalles
Si bien es cierto que no es ALTER COLUMN, si solo desea cambiar el nombre de la columna, eliminar la restricción NOT NULL o cambiar el tipo de datos, puede usar el siguiente conjunto de comandos peligrosos:
PRAGMA writable_schema = 1;
UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';
PRAGMA writable_schema = 0;
Deberá cerrar y volver a abrir su conexión o vaciar la base de datos para volver a cargar los cambios en el esquema.
Por ejemplo:
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **create table BOOKS ( title TEXT NOT NULL, publication_date TEXT NOT
NULL);**
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
Error: BOOKS.publication_date may not be NULL
sqlite> **PRAGMA writable_schema = 1;**
sqlite> **UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT
NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';**
sqlite> **PRAGMA writable_schema = 0;**
sqlite> **.q**
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
sqlite> **.q**
LAS REFERENCIAS SIGUEN:
pragma writable_schema
Cuando este pragma está activado, las tablas SQLITE_MASTER en las que la base de datos se puede cambiar usando las sentencias UPDATE, INSERT y DELETE ordinarias. Advertencia: el mal uso de este pragma puede resultar fácilmente en un archivo de base de datos corrupto.
[alterar tabla] (de http://www.sqlite.org/lang_altertable.html )
SQLite admite un subconjunto limitado de ALTER TABLE. El comando ALTER TABLE en SQLite permite al usuario cambiar el nombre de una tabla o agregar una nueva columna a una tabla existente. No es posible cambiar el nombre de una columna, eliminar una columna o agregar o eliminar restricciones de una tabla.
SQLite admite un subconjunto limitado de ALTER TABLE. El comando ALTER TABLE en SQLite permite al usuario cambiar el nombre de una tabla o agregar una nueva columna a una tabla existente. No es posible cambiar el nombre de una columna, eliminar una columna o agregar o eliminar restricciones de una tabla. Pero puede modificar el tipo de datos de la columna de la tabla u otra propiedad mediante los siguientes pasos.
Para más detalles puede consultar el enlace .