SQLite不支持alter table drop constraint命令。允许的语法可以看到here。您需要创建一个没有约束的新表,传输数据,然后删除旧表。 我认为应该采取以下措施:
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;
3条答案
按热度按时间9udxz4iz1#
SQLite不支持
alter table drop constraint
命令。允许的语法可以看到here。您需要创建一个没有约束的新表,传输数据,然后删除旧表。我认为应该采取以下措施:
请注意,
insert into
可能可以简化为 * 不 * 使用显式列名,但我还是保留了这种方式,以防您也想更改结构。例如,如果您要 * 删除 *
parent_id
列上的约束,那么将其保留在那里的用处就很可疑。在这种情况下,您可以将数据传输修改为:utugiqy62#
我认为这是一个更简单,更简洁的方法:
现在可以重新转储新的数据库表并比较差异。
cgyqldqp3#
使用DB Browser for SQLite,您可以转到
Modify Table
,然后单击constraints
选项卡,然后单击Remove constraint
。