如何从sqlite(3.6.21)表中删除约束?
我有下面的表格:
CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER CONSTRAINT parent_id REFERENCES parent(id), description TEXT);
我如何删除约束?
SQLite不支持alter table drop constraint
命令。 您将需要创build一个没有约束的新表,传输数据,然后删除旧表。
我觉得像下面的东西应该工作:
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;
如果你不想传输,你也可以从上面的所有语句中删除parent_id。
我认为这是一个更简单,更简洁的方法:
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
您现在可以重新创build新的数据库表并比较差异。