взято с этого сайта, http://www.sqlite.org/foreignkeys.html.
Предполагая, что библиотека скомпилирована с включенными ограничениями внешнего ключа, она все же должна быть включена приложением во время выполнения с помощью команды PRAGMA foreign_keys. Например:
sqlite> PRAGMA foreign_keys = ON;
Ограничения внешнего ключа по умолчанию отключены (для обратной совместимости), поэтому должны быть включены отдельно для каждого соединения с базой данных отдельно. (Тем не менее, обратите внимание, что будущие выпуски SQLite могут измениться, так что ограничения внешнего ключа будут включены по умолчанию. Внимательные разработчики не будут делать никаких предположений относительно того, включены ли внешние ключи по умолчанию, но вместо этого будут включать или отключать их при необходимости.) Приложение может также использовать оператор PRAGMA foreign_keys, чтобы определить, включены ли в настоящее время внешние ключи. Следующий сеанс командной строки демонстрирует это:
sqlite> PRAGMA foreign_keys;
0
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
1
sqlite> PRAGMA foreign_keys = OFF;
sqlite> PRAGMA foreign_keys;
0
Подсказка: если команда «PRAGMA foreign_keys» не возвращает данных вместо одной строки, содержащей «0» или «1», то используемая версия SQLite не поддерживает внешние ключи (либо потому, что она старше 3,6 .19 или потому, что он был скомпилирован с определением SQLITE_OMIT_FOREIGN_KEY или SQLITE_OMIT_TRIGGER).
Невозможно включить или отключить ограничения внешнего ключа в середине транзакции с несколькими утверждениями (когда SQLite не находится в режиме автоматической фиксации). Попытка сделать это не возвращает ошибку; это просто не имеет никакого эффекта.