SQLite STRICT table
A SQLite STRICT table enforces a restricted set of column types after permitted coercions, while its ANY columns preserve the received value and type without coercion.
STRICT is a per-table option available since SQLite 3.37.0. Ordinary ANY can convert numeric-looking text; STRICT ANY does not. Preservation concerns the value actually bound, not earlier source data. [1]
On SQLite 3.45.1, a controlled decimal-point text input lost one unit when inserted into STRICT INTEGER. Text bound into STRICT ANY remained text, but a Python float already rounded before binding remained rounded. Exact numeric equality with the source must be tested separately from type validity. [2]
Relations
Citations
Sources & caveats
- Primary-source definition and controlled Python 3.12.3 / SQLite 3.45.1 observations. No claim that all engine versions were tested.