前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

SQLiteで外部キー制約

Androidで外部キー制約を使いたい場合、SQLiteで外部キー制約が可能になったのはVersion3.6からなので、
Androidではどのバージョンがサポートされているかを必要がある。調べてみるとどうやらAPI Level8のFroyoかららしい。

Android APIレベル別SQLiteのサポートバージョン
http://stackoverflow.com/questions/2421189/version-of-sqlite-used-in-android

ただしデフォルトでは外部キー制約は強制されないため有効化する必要がある。

有効にする為のトリッキーなコード
http://stackoverflow.com/questions/2545558/foreign-key-constraints-in-android-using-sqlite-on-delete-cascade

そして、API Level16(Jelly Bean)から外部キー制約を有効にするメソッドが新たに追加された。
setForeignKeyConstraintsEnabled(boolean)
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#setForeignKeyConstraintsEnabled(boolean)

onConfigureコールバックまたは openOrCreateDatabaseのタイミングで呼ぶのが良いらしい。