キノコの自省録

日々適当クリエイト

libsqlite3で外部キー制約をONにする

Objective-Cで使用できるsqlite3 (libsqlite3)で、外部キー制約(FOREIGN_KEY)を有効にする方法の覚書。
(sqlite3の外部キー制約は、デフォルトでは無効になっています)

int ret = 0;
sqlite3_db_config(handle, SQLITE_DBCONFIG_ENABLE_FKEY, 1, &ret);
NSLog(@"Foreign key enabled: %d", ret);


第1引数handleは、sqlite3のデータベースハンドル、
第2引数SQLITE_DBCONFIG_ENABLE_FKEYはコンフィグ識別子(外部キー変更)、
第3引数は外部キー制約有効(true)、無効(false)、
第4引数は実行結果です。
実行結果が不要な場合、第4引数にNULLを割り当てることもできます。


なお、sqlite3の外部キー制約は、version3.6.19から使用可能です。
http://d.hatena.ne.jp/naga_sawa/20101219/1292774083


バージョンは、sqlite3_libversion()で確認可能です。
大抵の場合、問題ないはずです。
手元のマシンでは3.7.12でした。