libpqxx  7.0.5
transaction.hxx
1 /* Definition of the pqxx::transaction class.
2  * pqxx::transaction represents a standard database transaction.
3  *
4  * DO NOT INCLUDE THIS FILE DIRECTLY; include pqxx/transaction instead.
5  *
6  * Copyright (c) 2000-2020, Jeroen T. Vermeulen.
7  *
8  * See COPYING for copyright license. If you did not receive a file called
9  * COPYING with this source code, please notify the distributor of this
10  * mistake, or contact the author.
11  */
12 #ifndef PQXX_H_TRANSACTION
13 #define PQXX_H_TRANSACTION
14 
15 #include "pqxx/compiler-public.hxx"
16 #include "pqxx/internal/compiler-internal-pre.hxx"
17 
18 #include "pqxx/dbtransaction.hxx"
19 
20 namespace pqxx::internal
21 {
23 class PQXX_LIBEXPORT basic_transaction : public dbtransaction
24 {
25 protected:
26  basic_transaction(connection &c, char const begin_command[]);
27 
28 private:
29  virtual void do_commit() override;
30  virtual void do_abort() override;
31 };
32 } // namespace pqxx::internal
33 
34 
35 namespace pqxx
36 {
41 
43 
63 template<
64  isolation_level ISOLATION = isolation_level::read_committed,
67 {
68 public:
70 
75  explicit transaction(connection &c, std::string const &tname) :
76  namedclass{"transaction", tname},
78  c, internal::begin_cmd<ISOLATION, READWRITE>.c_str())
79  {}
80 
81  explicit transaction(connection &c) : transaction(c, "") {}
82 
83  virtual ~transaction() noexcept override { close(); }
84 };
85 
86 
89 
91 using read_transaction =
93 
95 } // namespace pqxx
96 
97 #include "pqxx/internal/compiler-internal-post.hxx"
98 #endif
Private namespace for libpqxx&#39;s internal use; do not access.
Definition: connection.hxx:59
transaction(connection &c)
Definition: transaction.hxx:81
virtual ~transaction() noexcept override
Definition: transaction.hxx:83
Standard back-end transaction, templatized on isolation level.
Definition: transaction.hxx:66
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:25
write_policy
Should a transaction be read-only, or read-write?
Definition: isolation.hxx:25
Connection to a database.
Definition: connection.hxx:135
Abstract transaction base class: bracket transactions on the database.
Definition: dbtransaction.hxx:52
transaction(connection &c, std::string const &tname)
Create a transaction.
Definition: transaction.hxx:75
Helper base class for the transaction class template.
Definition: transaction.hxx:23
isolation_level
Transaction isolation levels.
Definition: isolation.hxx:64