Quoting Dan Kennedy ([EMAIL PROTECTED]): > > - The second problem appears to be a problem with self-locking. I'm > > inserting a "mapping" into a table. I have a query active to find ids > > that require mapping, and then I try to find the current lowest > > unused "mapping" value, and insert it. > > Right. You can't modify a table that is currently being scanned by > a SELECT query. One way around this is to make a copy of the table > in a TEMP table for the duration of the operation.
But actually I'm not currently selecting from it. I prepare two statements, one for query and one for insert. The query should only return 0 or 1 rows. I do the query, then if it returns 0 rows, I do the insert. I repeat this multiple times, using the same prepared statements each time. Like I said, this never caused a problem when I did it in MySQL or PostgreSQL. I realize that SQLite has to be simplied compared to full features RDBMS, but it appears that either the SQLite library, or possibly the perl wrapper, is somehow mistaking a prepared statement which has finished executing the current query for one whose query is still open. I suppose the only way I'm going to know for sure is to try writing the same sequence of events in C, and it's been so long I'm not sure my C skills are up to it. -- Paul Tomblin <[EMAIL PROTECTED]> http://xcski.com/blogs/pt/ If you're not part of the solution, you're part of the precipitate.