2013-05-04 52 views
4

我只是教我自己的sqlite,所以當我能夠刪除父條目時,我驚訝地發現我的foreign_key約束不起作用。然後,我在閱讀更多內容後瞭解到,foreign_key的編譯默認情況下在每個會話中都處於關閉狀態。似乎奇怪的是,沒有資源文件(例如vi中的.exrc),您可以使用默認情況下爲每個會話設置雜注,但很好。所以我必須重新編譯sqlite3或者每次都設置它。在sqlite3中,是否存在foreign_key完整性檢查?

無論如何,我的問題是,在我刪除父母之後,是否有辦法對外鍵約束進行完整性檢查?即只要告訴sqlite運行它在運行時運行的相同邏輯,如果它在插入或刪除等時打開了編譯指示,它最初是這樣運行的呢?

我看到「pragma integrity_check」,但這只是尋找腐敗似乎。

感謝, 賈斯汀

+0

ooops!我剛從這裏學到了[link](http://zetcode.com/db/sqlite/tool/),那裏有一個.sqliterc,你可以放在你的家庭目錄中。這正是我想要的。只需放在「pragma foreign_keys = on」行中即可我全都定下來了。 – Eradicatore 2013-05-05 15:50:06

回答

0

運行以下命令:

PRAGMA foreign_keys; 

結果將是:

0 // foreign keys Disabled 
1 // foreign keys Enabled 

要啓用或禁用的外鍵運行:

PRAGMA foreign_keys = ON; 

PRAGMA foreign_keys = OFF; 

更多信息Here