Of course, I read documentation and saw that transaction is a supported feature. But I can't get to work it. In order to make sure that we talk about the same thing I understand transaction as atomic operation. One or more data modification language statements can be placed within transaction. Only two legal results for transaction might have take place: 1) all statements executed successfully OR 2) none of them successful. It can't be situation when some statements are successful and some failed within the same transaction.
I downloaded sqlite3 for Windows. My program dynamically builds a file with sql statements like this bellow: BEGIN TRANSACTION; -- This SQL statement fails because it's trying -- to insert a duplicate key. INSERT INTO t(id) VALUES(10); -- This SQL statement always successful despite on fact -- that first SQL statement failed UPDATE t SET end_date=20 WHERE id=9; END TRANSACTION; COMMIT TRANSACTION; Update statement always successful, even when INSERT fails. So situation is such that some DML statements are successful and some failed within the same transaction. I could not belive that. I tried dozens of times using syntax UPDATE OR ROLLBACK SET ..., but I had no luck I expect that UPDATE will never change a data on the table if INSERT fails. Please, explain me what am I doing wrong? I'm a database person, but I could not figure out what to do in such situation. I need to get to work number of SQL statements in transactional mode: all or nothing succeeds. Is any way to check result of execution SQL statement? Is it possible to select a system variable that would give me status of the last SQL. Thank you very much, Vladimir