골라서 켜는 진짜 타입 검사
2021년 11월에 나온 SQLite 3.37이 STRICT 테이블을 들고 왔어. CREATE TABLE 끝에 STRICT만 붙이면 SQLite가 선언한 타입에 안 맞는 insert를 거부해. 2026년에 새로 schema를 짠다면 이게 기본이어야 해.
STRICT 모드가 받아주는 타입은 다섯 개뿐이야. INTEGER, REAL, TEXT, BLOB, ANY. VARCHAR(255) 같은 느슨한 affinity 이름은 테이블을 만드는 순간에 거부당해. STRICT는 schema가 거짓말을 못 하게 만들어.
Tip: 2026년에 새 schema를 시작한다면 모든 테이블에 STRICT를 기본으로 깔아. 타입이 헐렁한 '기능'은 2000년대 초 embedded C 시절에 일부러 택한 타협이었어. 요즘 앱 코드는 DB가 계약을 대신 지켜주기를 원해.
한 가지 걸리는 게 있어. STRICT 테이블은 모든 컬럼 타입이 저 다섯 안에 들어와야 해. 그래서 기존 schema를 옮기려면 VARCHAR나 NUMERIC 같은 걸 strict 타입으로 다시 써야 하지. ANY는 진짜로 여러 타입을 담아야 하는 컬럼을 위한 탈출구야. key-value 테이블의 value 컬럼 같은 자리 말이야.