ON DELETE CASCADE无法在SQLite中运行

时间:2011-11-02 18:42:57

标签: sqlite

在SQLite for iOS(3.7.7)中,我正在运行这些查询:

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);

但是当我删除一个场地时,子项目事件不会被删除。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我遵循了Catcall的说法,它对我有用:通过运行

设置foreign_keys
stmt.execute("PRAGMA foreign_keys = ON");

每次我建立与数据库的连接。

答案 1 :(得分:0)

问题似乎是在不同线程中使用多个句柄虽然已同步。由于iOS中包含的sqlite足够新,只要它们被正确同步就允许跨线程使用一个句柄,使用一个句柄而不是几个句柄应该使这成为一个没问题。但我有兴趣了解如何以及其他人是否解决了这个问题。