33

我有两个表,themequiz,这是它们的定义:

    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)
);

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

4

1 回答 1

62

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

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

sqlite> PRAGMA foreign_keys = ON;
于 2012-02-24T15:53:43.390 回答