On Mon, Aug 31, 2015 at 4:50 AM, Nicolas J?ger <jager.nicolas at laposte.net> wrote:
> I'm starting to use transaction in my C++ code to delete some entries > (tags) in my db. during execution, the first transaction (each > transaction is contained in one string), like : > > BEGIN TRANSACTION; > DELETE FROM TAGS WHERE NAME = 'loki'; > DELETE FROM TAGSMAP WHERE COLLECTION_ID = '3' AND TAG_id = '54'; > COMMIT; > > is executed by running `sqlite3_prepare_v2()` and the `sqlite3_stmt` > returns `SQLITE_DONE`. So I consider the transaction made and closed. > but if I looked in the db I still see the row/entry for 'loki' > Nope - you have only run the BEGIN part of the transaction. prepare() prepares only one single statement, not multiples (you have 4 statements in your SQL). Thus when you try to run another transaction, that BEGIN is still open. -- ----- stephan beal http://wanderinghorse.net/home/stephan/ http://gplus.to/sgbeal "Freedom is sloppy. But since tyranny's the only guaranteed byproduct of those who insist on a perfect world, freedom will have to do." -- Bigby Wolf