Small. Fast. Reliable.
Choose any three.

## SQLite C Interface

## Database Snapshot

>     typedef struct sqlite3_snapshot {
>       unsigned char hidden[48];
>     } sqlite3_snapshot;

Important: This interface is experimental and is subject to change without notice.

An instance of the snapshot object records the state of a WAL mode database for some specific point in history.

In WAL mode, multiple database connections that are open on the same database file can each be reading a different historical version of the database file. When a database connection begins a read transaction, that connection sees an unchanging copy of the database as it existed for the point in time when the transaction first started. Subsequent changes to the database from other connections are not seen by the reader until a new read transaction is started.

The sqlite3_snapshot object records state information about an historical version of the database file so that it is possible to later open a new read transaction that sees that historical version of the database rather than the most recent version.

The constructor for this object is sqlite3_snapshot_get(). The sqlite3_snapshot_open() method causes a fresh read transaction to refer to an historical snapshot (if possible). The destructor for sqlite3_snapshot objects is sqlite3_snapshot_free().

See also lists of Objects, Constants, and Functions.