기본값 OFF — 켜야 함
SQLite 가 FK 지원하는데 backward 호환 위해 기본값 OFF. connection 마다 켜야 함:
PRAGMA foreign_keys = ON;가장 흔한 SQLite 사고. Schema 가 FK 선언 받아주고 다이어그램은 맞아 보이는데, FK 위반 insert 가 silently 성공 — 엔진이 체크 안 하니까. 피파를 비롯한 모든 SQLite 프레임워크가 새 connection 마다 이 PRAGMA 돌려.
Warning:
PRAGMA foreign_keys 는 connection 단위, DB 단위 아님. 모든 connection 의 첫 statement 로. Connection pool 은 connect_args / on-connect callback 에서 처리해야 함.활성화 후 FK 가:
- Parent 테이블에 매치 안 되는 FK insert 거부.
- Child orphan 만드는 parent 삭제 거부 (
ON DELETE CASCADE등 명시 안 한 한). - 옵션으로 update/delete cascade — w08.