Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite:关于删除的级联操作不正常_Sqlite - Fatal编程技术网

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”中添加主键