00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef PQXX_DBTRANSACTION_H
00019 #define PQXX_DBTRANSACTION_H
00020
00021 #include <string>
00022
00023 #include "pqxx/transaction_base.h"
00024
00025 namespace pqxx
00026 {
00027
00029
00034 class PQXX_LIBEXPORT dbtransaction : public transaction_base
00035 {
00036 protected:
00037 explicit dbtransaction(connection_base &C,
00038 const PGSTD::string &IsolationString,
00039 const PGSTD::string &NName) :
00040 transaction_base(C, NName),
00041 m_StartCmd("START TRANSACTION ISOLATION LEVEL " + IsolationString)
00042 {}
00043
00045 const PGSTD::string &StartCmd() const { return m_StartCmd; }
00046
00047 private:
00049 virtual void DoBegin() =0;
00051 virtual result DoExec(const char Query[]) =0;
00053 virtual void DoCommit() =0;
00055 virtual void DoAbort() =0;
00056
00058 PGSTD::string m_StartCmd;
00059 };
00060
00062 template<> inline PGSTD::string Classname(const dbtransaction *)
00063 {
00064 return "dbtransaction";
00065 }
00066
00067 }
00068
00069 #endif
00070