Подтвердить что ты не робот

Ограничение внешнего ключа не работает

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

    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 в таблице quiz. Когда я пытаюсь вставить запись в викторину таблицы, которая содержит значение 30, например, как внешний ключ, запись успешно вставлена ​​в таблице quiz, хотя в таблице тем не существует записи с id = 30, я означает, что он не должен был пресекать эту вставку, поскольку у меня было ограничение внешнего ключа?

4b9b3361

Ответ 1

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

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

sqlite> PRAGMA foreign_keys = ON;