SQLite にも Rust 流「エディション」が必要だ

Judul asli: SQLite should have (Rust-style) editions

Mengapa Ini Penting

SQLiteの普及度を踏まえると、デフォルト設定の問題はデータ整合性リスクに直結する

ブログ「mort.coffee」は2026年7月15日、SQLiteのデフォルト設定に重大な問題があるとし、Rustのエディション制度に倣った互換性維持の仕組みを提案した。

SQLiteは組み込みプロジェクトやローカルデータ保存の業界標準として広く使われているが、筆者はそのデフォルト設定に深刻な問題があると指摘する。

第一の問題は、外部キー制約がデフォルトで無効な点だ。他のRDBMSではuserを削除する際にpostsテーブルの参照が残ればエラーになるが、SQLiteは黙って処理する。さらにSQLiteはROWIDを再利用するため、削除後に別ユーザーが同じIDを取得し、前のユーザーの投稿を「引き継いでしまう」事態が起きる。修正には`PRAGMA foreign_keys = ON;`が必要だが、デフォルトではオフのままだ。

第二の問題は、カラムが宣言された型以外の値を保存できる「型アフィニティ」の仕組みだ。INTEGER型と宣言したカラムにTEXTを格納しても、SQLiteはエラーを出さない。

筆者はこれらの問題を解決するため、Rustの「エディション」制度のように、新しいデフォルト設定を持つオプトイン方式の互換性バージョンをSQLiteに導入することを提案している。既存コードを壊さずに、より安全な動作を新規プロジェクトに提供できる仕組みだ。

Sumber

mort.coffee — Baca artikel asli →