I have a table define like this: CREATE TABLE "sessiond" ( "journal" VARCHAR(4) DEFAULT '' NOT NULL, "session" VARCHAR(16) DEFAULT '' NOT NULL, "pid" INTEGER DEFAULT 0 NOT NULL, rowid INTEGER PRIMARY KEY );
In my application I open 2 connections to this table, one for reading and one for writing. I do that because sometimes we do a SELECT, and while reading through those rows we'll UPDATE them. With only 1 connection the SELECT will block the UPDATE. I also have WAL mode turned on. The problem is when I do an INSERT and then try to SELECT that record by rowid it doesn't find it. The INSERT is done on the write connection and the SELECT is done on the read connection. However, if I open a new connection and do the SELECT, the new row is there. To be a little more specific, the problem happens when I try to do sqlite3_bind_int() on the prepared statement using the new rowid. It doesn't use the rowid it uses NULL. The prepared statement is "SELECT * FROM sessiond WHERE rowid=?;" Then I call sqlite3_bind_int(ppStmt, 1, rowid) and the resulting SELECT command is SELECT * FROM "sessiond" WHERE "rowid"=NULL; Which is obtained by calling sqlite3_expanded_sql(). If I use an older rowid in the SELECT, it works just fine. It just doesn't work when using the rowid that was just created. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users