2011-11-02 96 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。 –