FK 关系不适用于 SQLite 数据库

问题描述 投票:0回答:1

我有两个表,主题测验,这是它们的定义:

    CREATE TABLE "theme" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "nom" VARCHAR NOT NULL );

CREATE TABLE quiz(

     id              INTEGER PRIMARY KEY,
     nom         VARCHAR(256) NOT NULL,
     theme      INTEGER NOT NULL,
     niveau      INTEGER NOT NULL,
     pass          INTEGER DEFAULT 1  NOT NULL,
     jok            INTEGER DEFAULT 1 NOT NULL,
    etat            INTEGER DEFAULT 0 NOT NULL,
    FOREIGN KEY (theme) REFERENCES theme(id)
);

theme
中的字段 id(主键)是
quiz
表中的 Foreign Key。 当我尝试在表测验中插入包含值 30 作为外键的记录时,该记录已成功插入到
quiz
表中,尽管主题表中没有带有
id = 30
的记录,我意思是,因为我有外键约束,所以不应该阻止这个插入?

sqlite foreign-keys
1个回答
70
投票

您确定外键支持已启用吗?

假设库是在启用外键约束的情况下编译的, 它仍然必须由应用程序在运行时启用,使用 PRAGMAforeign_keys 命令。例如:

sqlite> PRAGMA foreign_keys = ON;
© www.soinside.com 2019 - 2024. All rights reserved.