Не происходит проверки FOREIGN KEY
Есть две таблицы
Таблица персонажей
CREATE TABLE characters (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name STRING,
description TEXT,
ranobe_id INTEGER,
FOREIGN KEY (
ranobe_id
)
REFERENCES ranobes (ranobe_id)
);
Таблица книжек
CREATE TABLE ranobes (
ranobe_id INTEGER PRIMARY KEY AUTOINCREMENT,
name STRING (256)
);
У одной книжки может быть несколько персонажей. Соответственно у персонажей есть FOREIGN KEY. Создал книжку

Пытаюсь создать персонажа
self.cursor.execute("INSERT INTO characters(name, description, ranobe_id)"
"VALUES (?,?,?)", (name, descr, r_id,))
db.add_new_character("Персонаж1", "Главный герой", 55)
По - идее должна произойти ошибка так как id указываю 55, а есть только 2, но нет

P.S. PRAGMA foreign_keys=ON; прописано:
Почему не возникает ошибки?
P.S.S. прописывал команду здесь
Ответы (1 шт):
Вроде как официальная документация на сайте sqlite говорит следующее:
It is not possible to enable or disable foreign key constraints in the middle of a multi-statement transaction (when SQLite is not in autocommit mode). Attempting to do so does not return an error; it simply has no effect.
Получается, что нельзя включить/выключить поддержку внешних ключей в середине транзакции. При этом такая попытка не вернет ошибки или предупреждения, а просто будет проигнорирована. Все pragma-команды (кроме настроек журнала, так как они сохраняют свое состояние) желательно выполнять отдельными запросами в начале выполнения программы (сразу после создания соединения и до реальной работы с данными приложения), а уже потом переходить к работе с данными.

