Piotr
Piotr

Reputation: 4963

ON DELETE CASCADE not working in SQLite

In SQLite for iOS (3.7.7) I am running these queries:

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

But when I delete a venue, the children events are not deleted. Any ideas?

Upvotes: 1

Views: 3023

Answers (2)

Matheus Z
Matheus Z

Reputation: 81

I followed what Catcall said and it worked for me: setting foreign_keys by running

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

each time I establish a connection to the database.

Upvotes: 5

Piotr
Piotr

Reputation: 4963

The problem seems to be the usage of multiple handles in different threads although synchronized. Since sqlite included in iOS is new enough to allow one handle to be used across threads as long as they are properly synchronized, using one single handle instead of several should make this a no-problem. But I would be interested in getting to know how and if someone else solves this problem.

Upvotes: 0

Related Questions