外键约束不起作用

时间:2012-02-24 15:24:57

标签: sqlite sqlitemanager

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

    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(主键)是测验表中的Foreign Key。 当我尝试在表测验中插入包含值30的记录(例如作为外键)时,记录将成功插入quiz表中,尽管主题表中没有{{1的记录我的意思是,因为我有一个外键约束,所以不应该阻止这个插入?

1 个答案:

答案 0 :(得分:44)

您确定foreign key support已启用吗?

  

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

sqlite> PRAGMA foreign_keys = ON;