00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "pqxx/dbtransaction"
00020
00021
00022
00023
00024
00025
00026
00027 namespace pqxx
00028 {
00029
00030 class PQXX_LIBEXPORT basic_transaction : public dbtransaction
00031 {
00032 protected:
00033 explicit basic_transaction(connection_base &C,
00034 const PGSTD::string &IsolationLevel,
00035 const PGSTD::string &TName);
00036
00037 private:
00038 virtual void do_begin();
00039 virtual void do_commit();
00040 virtual void do_abort();
00041 };
00042
00043
00045
00073 template<isolation_level ISOLATIONLEVEL=read_committed>
00074 class transaction : public basic_transaction
00075 {
00076 public:
00077 typedef isolation_traits<ISOLATIONLEVEL> isolation_tag;
00078
00080
00085 explicit transaction(connection_base &C, const PGSTD::string &TName):
00086 basic_transaction(C, isolation_tag::name(), TName)
00087 { Begin(); }
00088
00089 explicit transaction(connection_base &C) :
00090 basic_transaction(C, isolation_tag::name(), PGSTD::string())
00091 { Begin(); }
00092
00093 virtual ~transaction() throw () { End(); }
00094
00095 protected:
00096 virtual const char *classname() const throw () { return "transaction"; }
00097 };
00098
00099
00101 typedef transaction<> work;
00102
00103 }
00104
00105