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
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.