S'il est vrai qu'il n'existe pas d'ALTER COLUMN, si vous souhaitez uniquement renommer la colonne, supprimer la contrainte NOT NULL ou modifier le type de données, vous pouvez utiliser la série de commandes suivante :
Note : Ces commandes peuvent potentiellement corrompre votre base de données, assurez-vous donc d'avoir une sauvegarde.
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;
Vous devrez soit fermer et rouvrir votre connexion, soit faire le vide dans la base de données pour recharger les modifications dans le schéma.
Par exemple :
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
LES RÉFÉRENCES SUIVENT :
pragma writable_schema
Lorsque ce pragme est activé, les tables SQLITE_MASTER de la base de données peuvent être modifiées à l'aide d'instructions UPDATE, INSERT et DELETE ordinaires. Avertissement : une mauvaise utilisation de ce pragme peut facilement entraîner un fichier de base de données corrompu.
modifier la table
SQLite supporte un sous-ensemble limité de ALTER TABLE. La commande ALTER TABLE de SQLite permet à l'utilisateur de renommer une table ou d'ajouter une nouvelle colonne à une table existante. Il n'est pas possible de renommer une colonne, de supprimer une colonne, ou d'ajouter ou de supprimer des contraintes d'une table.
![ALTER TABLE SYNTAX]()
0 votes
Vous pouvez le faire en utilisant navigateur de bases de données pour sqlite assez facilement
1 votes
Veuillez considérer de marquer cette réponse comme acceptée stackoverflow.com/a/52346199/124486