2012-02-24 120 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