KSQL_TRANS_OPEN(3)

NAME
ksql_trans_exclopen, ksql_trans_open, ksql_trans_singleopen - open a database transaction

LIBRARY
ksql

SYNOPSIS
#include <sys/types.h>
#include <stdint.h>
#include <ksql.h>
enum ksqlc
ksql_trans_exclopen(struct ksql *sql, size_t id);
enum ksqlc
ksql_trans_open(struct ksql *sql, size_t id);
enum ksqlc
ksql_trans_singleopen(struct ksql *sql, size_t id);

DESCRIPTION
The ksql_trans_exclopen(), ksql_trans_open(), and ksql_trans_singleopen() functions open transactions with different lock states. All functions accept sql, the database connection; and id, an identifier used in error reporting and in making sure that transaction calls are symmetric. Each of these functions must be followed by ksql_trans_commit(3) or ksql_trans_rollback(3).

If ksql_trans_open() is used (a “DEFERRED” transaction, in SQLite terms), the database is locked only when the first database operation is invoked. The lock is read-shared (multiple readers, no writers) for a read operation and is upgraded to write-single (multiple readers, single writer) on a write.

If ksql_trans_singleopen() is used (“IMMEDIATE”), the database is immediately locked in write-single mode.

If ksql_trans_exclopen() (“EXCLUSIVE”), the database is opened in a write-exclusive lock, where only the calling process may write or read from the database.

Recursive transactions are disallowed.

RETURN VALUES
This returns KSQL_NOTOPEN if the database connection is not open, KSQL_TRANS if a transaction is already open, KSQL_DB if errors occurred on the database, or KSQL_OK on success.

SEE ALSO
sqlite3_exec(3)