2012-02-24 94 views
21

我有两个表,主题测验,这里是他们的定义是:外键约束不起作用

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表中,虽然主题表中没有记录与id = 30,我的意思是wasn因为我有一个外键约束,应该插入这个插入吗?

+0

您使用哪个sqlite版本? – TTT 2012-02-24 15:55:56

回答

37

您确定foreign key support已启用?

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

sqlite> PRAGMA foreign_keys = ON; 
+3

你救了我,我必须启用它:'PRAGMA foreign_keys = ON;' – Luca 2012-02-24 16:46:17