libpqxx  7.9.0
subtransaction.hxx
1 /* Definition of the pqxx::subtransaction class.
2  *
3  * pqxx::subtransaction is a nested transaction, i.e. one within a transaction.
4  *
5  * DO NOT INCLUDE THIS FILE DIRECTLY; include pqxx/subtransaction instead.
6  *
7  * Copyright (c) 2000-2024, Jeroen T. Vermeulen.
8  *
9  * See COPYING for copyright license. If you did not receive a file called
10  * COPYING with this source code, please notify the distributor of this
11  * mistake, or contact the author.
12  */
13 #ifndef PQXX_H_SUBTRANSACTION
14 #define PQXX_H_SUBTRANSACTION
15 
16 #if !defined(PQXX_HEADER_PRE)
17 # error "Include libpqxx headers as <pqxx/header>, not <pqxx/header.hxx>."
18 #endif
19 
20 #include "pqxx/dbtransaction.hxx"
21 
22 namespace pqxx
23 {
28 
76 class PQXX_LIBEXPORT subtransaction : public transaction_focus,
77  public dbtransaction
78 {
79 public:
81  explicit subtransaction(dbtransaction &t, std::string_view tname = ""sv);
82 
84  explicit subtransaction(subtransaction &t, std::string_view name = ""sv);
85 
86  virtual ~subtransaction() noexcept override;
87 
88 private:
89  std::string quoted_name() const
90  {
91  return quote_name(transaction_focus::name());
92  }
93  virtual void do_commit() override;
94 };
95 } // namespace pqxx
96 #endif
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:33
Abstract transaction base class: bracket transactions on the database.
Definition: dbtransaction.hxx:54
"Transaction" nested within another transaction
Definition: subtransaction.hxx:78
Base class for things that monopolise a transaction's attention.
Definition: transaction_focus.hxx:29
std::string_view name() const &noexcept
Name for this object, if the caller passed one; empty string otherwise.
Definition: transaction_focus.hxx:56