On Sat, 19 Jan 2019 08:07:42 -0500 Richard Hipp <d...@sqlite.org> wrote:
> The busy timeout is not working because you start out your transaction > using a read operation - the first SELECT statement - which gets a > read lock. Later when you go to COMMIT, this has to elevate to a > write lock. But SQLite sees that some other process has already > updated the database since you started your read. Another solution is to rely on atomicity in SQL: insert into t select :pid, nrows, N from (select 1 as N union select 2 union select 3) as cardinals cross join (select :pid, count(*) as nrows from t) as how_many; By using a single SQL statement, you avoid a user-defined transaction and any proprietary transaction qualifiers. --jkl _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users