SQLiteには外部キーがない?
SQLiteには現時点で外部キーはないのか。最近のバージョンではあるらしい。正確に言うと3.6.19から。ただSQLiteのバージョンといっても、SQLiteというデータベースソフトウェアがあるわけではないから、SQLiteを取り扱うためのツール(PHPとかPerlとか)で使用しているライブラリに依存しているのだろう。ということでphpinfo()で確認してみることにした。
一つ目のレンタルサーバではSQLiteの項目そのものがない。あれ。でもpdo_sqliteがあったのでそちらを確認すると3.3.6となっていた。これって多分ダメなんだよね・・・。
次のを確認してみた。SQLiteの項目はあったけど、2.8.17となっている。これって古すぎじゃないの。で、pdo_sqliteを確認するとこちらでは3.2.8となっている。SQLiteのバージョンは3系にはなっているものの外部キーはだめそうだ。
SQLiteはそもそも外部キーを作成するためのSQLを実行すると、エラーも出ずそのまま通ってしまう点がちょっと怖い。コレで大丈夫と思ってバージョンを確かめずにいると痛い目にあう羽目になりそうだ。SQLiteを使う際はバージョン確認は必須だ(他のソフトの場合も当然といえば当然だが深刻度が違う)。
それよりも素のSQLiteとPDO経由のSQLiteでバージョンが違う点には驚いた。個別にコンパイルされるわけだから当然といえば当然なのだが・・・。後者の場合PHPのsqliteコマンドを使うのとPDO経由で使うのとでは当然扱いが違うんだろうなぁ。