Comment puis-je supprimer une contrainte d’une table sqlite (3.6.21)?

J’ai le tableau suivant:

CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER CONSTRAINT parent_id REFERENCES parent(id), description TEXT); 

Comment puis-je supprimer la contrainte?

SQLite ne prend pas en charge la commande alter table drop constraint . Vous devrez créer une nouvelle table sans contrainte, transférer les données, puis supprimer l’ancienne table.

Je pense que quelque chose comme ce qui suit devrait fonctionner:

 CREATE TABLE child2 ( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT ); INSERT INTO child2 (id, parent_id, description) SELECT id, parent_id, description FROM CHILD; DROP TABLE child; ALTER TABLE child2 RENAME TO child; 

Vous pouvez également supprimer parent_id de toutes les déclarations ci-dessus si vous ne voulez pas le transférer.

Je pense que cette approche est plus simple et plus concise:

 copy db.sqlite3 backup-db.sqlite3 echo .dump tablename | sqlite3 db.sqlite3 > modify.sql (now delete or change the constraint in modify.sql) echo drop table tablename; | sqlite3 db.sqlite3 sqlite3 db.sqlite3 < modify.sql 

Vous pouvez maintenant redéfinir la nouvelle table de firebase database et comparer les différences.