Hello all,

I'm writing a small simulation app and for it I would like to use SQLite3
as an application file format, as suggested by the "Appropriate uses for
SQLite" page in sqlite.org.  More specifically, the page suggests calling
BEGIN TRANSACTION when opening a file and calling COMMIT when saving it
again, or ROLLBACK if closing it without saving.  Simple enough, up until
the point where I want to implement a "Save As..." menu option, where the
current state of the application is saved to a new file (new database) with
the changes, while the changes in the current file are rolled back.

For that, the simplest idea would be to use the online backup family of
functions, calling sqlite3_backup_init() and sqlite3_backup_step() on the
database, calling COMMIT on the backup and ROLLBACK on the original.
Naturally, that doesn't work, as you can't back up a database in the middle
of a transaction -- sqlite3_backup_step() returns SQLITE_BUSY.

That being said, has anyone on the list encountered (and hopefully solved)
this particular problem?  This probably means I have to scrap the idea of
holding a transaction through the editing of the file, but then should I
copy the database to a memory-based db?  Any particular tips or caveats?

I appreciate the attention,

          -Tiago

-- 
In those days, in those distant days, in those nights, in those remote
nights, in those years, in those distant years...
          - Gilgamesh, Enkidu and the Underworld
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to