2012-02-24 4 views
21

機能しない、ここにその定義です:外部キー制約は、私は2つのテーブル、<strong>テーマ</strong>と<strong>クイズ</strong>を持って

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 Foreign Keyクイズテーブル。 外部キーとして値30などのテーブルクイズにレコードを挿入しようとすると、id = 30のテーマテーブルにレコードが存在しないにもかかわらず、レコードがquizテーブルに正常に挿入されました。つまり、wasn私は外部キーの制約を持っていたので、この挿入を禁止するはずがありませんか?

+0

どのsqliteバージョンを使用しますか? – TTT

答えて

37

foreign key supportが有効になっていますか?ライブラリは、それはまだ PRAGMA FOREIGN_KEYSコマンドを使用して、実行時にアプリケーションによって有効にする必要があります 、有効な外部キー制約を使用してコンパイルされたと仮定すると、

。例:

sqlite> PRAGMA foreign_keys = ON; 
+3

あなたは私の人を救って、私はそれを有効にしなければなりません: 'PRAGMA foreign_keys = ON;' – Luca

関連する問題