A B*_*A B 11 sqlite foreign-keys
我已经设置了两个表:
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)
);
Run Code Online (Sandbox Code Playgroud)
插入数据后A,它看起来像这样:
1 John
2 Amy
3 Peter
Run Code Online (Sandbox Code Playgroud)
插入数据后B,它看起来像这样:
1 1 Lord of the Rings
2 1 Catch 22
3 2 Sum of All Fears
4 3 Hunt for Red October
Run Code Online (Sandbox Code Playgroud)
然后我执行以下语句:
delete from a where id=1;
Run Code Online (Sandbox Code Playgroud)
我得到以下内容: "Error: foreign key constraint failed"
然后我重新启动并重sqlite3试,但这次我先输入:
PRAGMA foreign_keys = 1;
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作......
小智 13
Table B具有其外键引用Table A您尝试删除的行的主键值的行,因此删除它将违反数据库的完整性.
您可以包含ON DELETE CASCADE在外键定义中.这样,当您从中删除Table A条目时,Table B链接到已删除行的任何条目也将被删除.不知道这是否适合您的申请.
"问题"是你在表B上设置了一个外键.
foreign key(id2) references A(id)
Run Code Online (Sandbox Code Playgroud)
这意味着id2表B中的列引用id表A中的列.Both Lord of the Rings和Catch 22from Table B都链接到Johnfrom Table A.因此,如果John不首先删除这两个条目,则无法删除Table B.
另一种方法是删除外键.
有关详细信息,请参阅此文档.
| 归档时间: |
|
| 查看次数: |
53864 次 |
| 最近记录: |