【发布时间】:2013-03-04 20:19:24
【问题描述】:
我已经设置了两个表:
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 -
不要删除东西,将它们标记为“死”。 stackoverflow.com/questions/502501/…
标签: sqlite foreign-keys