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エディタを開く