2011-04-10 93 views
0

我在我的項目中執行foreign_key編譯指示語句時遇到問題。目前我已將此寫入程序中。使用sqlite編譯指示語句來配置數據庫?

SQLiteStatement pragma = db.compileStatement("PRAGMA foreign_key = ON;"); 

pragma.execute; 

這些語句是在創建數據庫之後執行的,從這一點開始創建表,這些表都可以正常工作。

問題是當我使用sqlite3調試數據庫時我在sqlite3中執行(pragma foreign_key;)語句,它總是顯示foreign_keys關閉,除非我在調試期間明確地啓用它。

所以我的問題是如何在我的應用程序中執行PRAGMA語句?

僅供參考,sqlite版本是3.6.22,默認情況下外鍵已關閉,但不具有定義的省略外鍵或省略觸發器。我知道我需要定義觸發器來執行外鍵約束。雖然我不知道爲什麼。

回答

3

foreign_keys pragma設置會話變量;它不是數據庫模式的一部分。它對每個「連接」默認爲關閉,如果要打開它,則需要爲每個連接打開它。

+1

+1:可能會將其更改爲默認情況下在未來版本的SQLite中打開,但由於向後兼容的原因,它目前處於關閉狀態。 – 2011-04-10 16:20:59

相關問題