2011-11-02 122 views
1

不工作在SQLite的針對iOS(3.7.7)我正在運行這些查詢:ON DELETE CASCADE SQLite中

PRAGMA foreign_keys = ON; 

create table venue(id integer primary key not null, name text not null); 

create table event(id integer primary key not null, name text not null, 
venue_id integer references venue(id) on delete cascade); 

但是當我刪除的場所,孩子的事件不會被刪除。有任何想法嗎?

+0

我無法在3.7.4中重現該行爲。你確定'PRAGMA foreign_keys = ON'是否在刪除場地之前設置? (這是連接設置,不是數據庫設置。) –

+0

這很奇怪。我確實犯了一個錯誤,就是沒有在每個連接上設置它,但是當我修復它時並沒有幫助。你在iPhone模擬器中嘗試過嗎?因爲我得到這個工作在SQLite的navicat,但不是在模擬器。 –

+0

好吧,我只是在模擬器中用最簡單的代碼嘗試過它,它的工作,所以錯誤必須在其他地方。謝謝。 –

回答

0

這個問題似乎是不同線程中多個句柄的用法,雖然同步。由於iOS中包含的sqlite是足夠新的,所以只要一個句柄正確同步,就允許跨線程使用一個句柄,但使用一個句柄而不是幾個句柄應該是沒有問題的。但是我想知道如何以及是否有人解決了這個問題。

2

我遵循的噓聲說,它的工作對我來說:通過運行

stmt.execute("PRAGMA foreign_keys = ON"); 
每次

我建立與數據庫的連接設置foreign_keys

+0

但它不適用於SQlite JDBC。 –