我已经成立了两个表:sqlite3的“外键约束失败”
CREATE TABLE A
(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT
);
CREATE TABLE B
(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
id2 INTEGER,
book TEXT,
FOREIGN KEY(id2) REFERENCES A(id)
);
后,我将数据插入A
,它看起来像这样:
1 John
2 Amy
3 Peter
后,我将数据插入B
,它看起来像这样:
1 1 Lord of the Rings
2 1 Catch 22
3 2 Sum of All Fears
4 3 Hunt for Red October
然后我执行以下语句:
delete from a where id=1;
我得到如下:"Error: foreign key constraint failed"
我然后重新启动sqlite3
,然后再试一次,但这次我进入这个第一:
PRAGMA foreign_keys = 1;
它仍然无法正常工作.....
设置'PRAGMA foreign_keys = 1'实际上强制执行外键约束。我得到的印象是你试图禁用它,这意味着你应该将它设置为0而不是1 – goonerify 2017-06-12 09:35:34
不要删除东西,将它们标记为“已死”。 https://stackoverflow.com/questions/502501/database-to-delete-or-not-to-delete-records – 2017-07-09 14:00:11