В SQLite 3.x вам нужно сделать следующий запрос каждый раз при подключении к базе данных SQLite:
PRAGMA foreign_keys = ON;
В противном случае SQLite будет игнорировать все ограничения внешнего ключа.
Почему каждый раз? Обратная совместимость с SQLite 2.x в соответствии с документацией .
В SQLite 4.x ограничения FK будут установлены по умолчанию .