After a little experimentation I can't find any better way of doing this than to have each transaction handled with a different connection to the database. In other words, for each BEGIN you need a sqlite3_open(). If you do this, different concurrent parts of your app can each run their own transaction. It all works as expected. Of course, you do get the increased time (it takes time to open and parse the database file) and memory overhead.
Looking back at the design of SQL (not just SQLite), the fact that BEGIN is not reentrant or recursive does remind us that SQL was designed back in the days before apps were as complicated as they are now. Simon. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users