1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
//
// Copyright (C) 2004-2008 Maciej Sobczak
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
//
#define SOCI_SOURCE
#include "soci/transaction.h"
#include "soci/error.h"
using namespace soci;
transaction::transaction(session& sql)
: handled_(false), sql_(sql)
{
sql_.begin();
}
transaction::~transaction()
{
if (handled_ == false)
{
try
{
rollback();
}
catch (...)
{}
}
}
void transaction::commit()
{
if (handled_)
{
throw soci_error("The transaction object cannot be handled twice.");
}
sql_.commit();
handled_ = true;
}
void transaction::rollback()
{
if (handled_)
{
throw soci_error("The transaction object cannot be handled twice.");
}
sql_.rollback();
handled_ = true;
}
|