Hello, How can I start a "read transaction" from BEGIN?
I am using `journal_mode=WAL`. What I am trying to do: From the first `BEGIN` that returns `SQLITE_OK`, all SELECTs read from the same snapshot/point in time. The issue is that its hard to tell if I reading from a read snapshot (where any successful commit on other connections since the reads BEGIN are ignored). When is a read transaction started? As an example, connection A and B: ``` run(A, "CREATE TABLE t1(a PRIMARY KEY, b);"); run(B, "BEGIN"); run(B, "SELECT * FROM t1"); = 0 rows run(A, "BEGIN"); run(A, "INSERT INTO t1 (a, b) VALUES (1, 2), (3, 4)"); run(A, "INSERT INTO t1 (a, b) VALUES (5, 6), (7, 8)"); run(A, "COMMIT"); run(B, "SELECT * FROM t1"); = 0 rows; READ TRANSACTION started ``` ``` run(A, "CREATE TABLE t1(a PRIMARY KEY, b);"); run(B, "BEGIN"); run(B, "SELECT 1"); = 0 rows run(A, "BEGIN"); run(A, "INSERT INTO t1 (a, b) VALUES (1, 2), (3, 4)"); run(A, "INSERT INTO t1 (a, b) VALUES (5, 6), (7, 8)"); run(A, "COMMIT"); run(B, "SELECT * FROM t1"); = 4 rows; READ TRANSACTION *NOT* started ``` ``` run(A, "CREATE TABLE t1(a PRIMARY KEY, b);"); run(B, "BEGIN"); run(A, "BEGIN"); run(A, "INSERT INTO t1 (a, b) VALUES (1, 2), (3, 4)"); run(A, "INSERT INTO t1 (a, b) VALUES (5, 6), (7, 8)"); run(A, "COMMIT"); run(B, "SELECT * FROM t1"); = 4 rows; READ TRANSACTION *NOT* started ``` https://www.sqlite.org/isolation.html Quote: "BEGIN IMMEDIATE command goes ahead and starts a write transaction" This is the only page where I can find a mention of the idea of "read transaction" and "write transaction". BEGIN IMMEDIATE allows the explicit start of a "write transaction". Does an API exist for a "read transaction"? Thanks _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users