Класс transaction_t

#include <db.hpp>

Полный список членов класса


Подробное описание

Класс, который обеспечивает начало, подтверждение и откат транзакций.

Начиная с:
v.1.1.0 Конструктор автоматически начинает транзакцию. Деструктор инициирует откат транзакции, если до этого явно не был вызван метод commit().
Пример использования:
  void f( oess_1::db::cln::db_t & db )
  {
    // Начинаем транзакцию.
    oess_1::db::cln::transaction_t trx( db );

    // Выполняем какие-то действия с базой.
    ...

    // Подтверждаем транзакцию.
    trx.commit();
  }

Деструктор исключений не выпускает. Для того, чтобы узнать, произошло ли в деструкторе исключение необходимо в конструкторе передать указатель на поток сообщений об ошибках:

  void f( oess_1::db::cln::db_t & db )
  {
    // Начинаем транзакцию.
    oess_1::db::cln::transaction_t trx( db, &std::cerr );

    // Создаем какой-то объект.
    oess_1::ent_id_t id = db.ent_create( "some_slice", some_object_t() );
    // Удалим его.
    db.ent_destroy( id );
    // Удалим его и вызовем исключение.
    db.ent_destroy( id );

    // При выходе из из функции по-исключению деструктор
    // вызовет откат транзакции. Но исключение из деструкторе
    // выпущено не будет.
  }
Примеры:

sample/file_archive_2/main.cpp.


Открытые члены

 transaction_t (db_t &db, std::ostream *errs=0)
void commit ()
 Подтвердить транзакцию.

Закрытые данные

db_tm_db
 База, в которой проводится транзакция.
bool m_is_finished
 Была ли завершена транзакция?
std::ostream * m_errs
 обнаруженных в деструкторе.


Методы

void commit (  ) 

Подтвердить транзакцию.

Даже, если возникнет исключение, откат в деструкторе осуществляться не будет.


Объявления и описания членов классов находятся в файлах:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:38 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz