Good day - There appears to be a bug in the way SQLite implements transactions :
I have an insert transaction which breaks a uniqueness constraint on an index: BEGIN TRANSACTION; INSERT INTO db VALUES("This breaks a constraint"); COMMIT; The problem is, if this transaction runs in a session, then NO transactions can ever run again in that session - eg. if I try to run the same transaction twice : On linux command line: $ echo ' BEGIN TRANSACTION; INSERT INTO db VALUES("This breaks a constraint"); COMMIT; BEGIN TRANSACTION; INSERT INTO db VALUES("This breaks a constraint"); COMMIT; ' | sqlite3 my_db_file.db Error: near line 1: UNIQUE constraint failed: db.some_field Error: near line 2: cannot start a transaction within a tranaction It is the second error that worries me, since it shows that the first failed transaction was not closed, even though I had clearly written "COMMIT;" at the end of it, and no transactions can ever run again in the same session. I thought that if a transaction fails, its effects are meant to be rolled back, and subsequent further transactions can proceed. Is this bug in the sqlite transaction implementation or am I missing something? Thanks for any responses, Regards, Jason