SQLite

Type Affinity (型親和性)

列に厳密なデータ型を固定しない柔軟な型システム

解説

PostgreSQLやMySQLが「カラムごとに保存できる型を厳格に固定する」静的型付けであるのに対し、SQLiteは「値そのものが型情報を持つ」動的型付け(Type Affinity / 型親和性)という極めてユニークな仕様を持っています。

実務で発生しやすい罠

VARCHAR(10) と定義したカラムに100文字の文字列を入れたり、INT と定義したカラムに日本語の文字列を挿入しても、SQLiteはエラーを出さずにそのまま保存します。

「ローカルのSQLiteでは動いていたのに、本番のPostgreSQLやMySQLにデプロイしたら型エラーでシステムが落ちた」という事故が頻発する最大の要因です。

構文
カラム名 任意の型名
具体例
CREATE TABLE test (val INT); INSERT INTO test VALUES ('abc'); -- エラーにならず保存される

この構文を実際に書いて試してみませんか?

SQLエディタを開く