SQLite:关于删除的级联操作不正常
我试了很多次,也看了其他论坛的帖子,但是他们没有帮到我。 这就是我的问题:我创建如下表:SQLite:关于删除的级联操作不正常,sqlite,Sqlite,我试了很多次,也看了其他论坛的帖子,但是他们没有帮到我。 这就是我的问题:我创建如下表: CREATE TABLE IF NOT EXISTS Parent (Id INTEGER PRIMARY KEY, Name STRING); CREATE TABLE IF NOT EXISTS Child (Id INTEGER, Name STRING, ParentId INTEGER, PRIMARY KEY (Id, ParentId)
CREATE TABLE IF NOT EXISTS Parent
(Id INTEGER PRIMARY KEY,
Name STRING);
CREATE TABLE IF NOT EXISTS Child
(Id INTEGER,
Name STRING,
ParentId INTEGER,
PRIMARY KEY (Id, ParentId)
FOREIGN KEY (ParentId) REFERENCES Parent (ParentId) ON DELETE CASCADE);
在此之后,我插入以下内容:
INSERT INTO Parent (Id, Name) VALUES (1, 'Michael');
INSERT INTO Child (Id, Name, ParentId) VALUES (1, 'Paul', 1);
好的!现在,每个表中都有一行,其中有一个父表和一个子表。现在我要删除父项:
DELETE FROM Parent WHERE Id = 1;
发生了什么事?表“Parent”中的行不再存在,但表“Child”中的行仍然存在,即使我说:“ON DELETE CASCADE”。默认情况下,外键约束不处于活动状态。必须使用以下命令启用它们,每个数据库会话一次:
PRAGMA foreign_keys = ON;
发件人:
2.启用外键支持
假设库是在启用外键约束的情况下编译的,
应用程序仍必须在运行时使用
PRAGMA外键命令。例如:
sqlite> PRAGMA foreign_keys = ON;
默认情况下禁用外键约束(用于向后 兼容性),因此必须为每个数据库单独启用 连接
在我需要它的地方,它可以工作-谢谢!但是:在这个例子中,我总是得到外键不匹配。如何修复此问题?在外键声明之前缺少一个逗号my live最大的失败,但仍然是外键mismatch@Gaem您的父表没有ParentId列。没有。。。错误是:我忘了在表“Parent”中添加主键