Ограничение внешнего ключа не работает - PullRequest
22 голосов
/ 24 февраля 2012

У меня есть две таблицы, тема и тест , вот их определение:

    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, язначит, не должен был запрещать эту вставку, так как у меня было ограничение внешнего ключа?

1 Ответ

44 голосов
/ 24 февраля 2012

Вы уверены, что поддержка внешнего ключа включена?

Если библиотека скомпилирована с включенными ограничениями внешнего ключа, она все равно должна быть включена приложением во время выполнения, используякоманда PRAGMA foreign_keys.Например:

sqlite> PRAGMA foreign_keys = ON;
...