Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

46 rindas
989 B

  1. #pragma once
  2. #include "transaction.h"
  3. namespace cppmariadb
  4. {
  5. /* transaction */
  6. transaction::transaction(connection& connection) :
  7. _connection (connection),
  8. _closed (false)
  9. { begin(); }
  10. transaction::~transaction()
  11. {
  12. if (!_closed)
  13. rollback();
  14. }
  15. void transaction::commit()
  16. {
  17. static const statement sCommit("COMMIT");
  18. if (_closed)
  19. throw exception("transaction is already closed", error_code::Unknown);
  20. _connection.execute(sCommit);
  21. _closed = true;
  22. }
  23. void transaction::rollback()
  24. {
  25. static const statement sRollback("ROLLBACK");
  26. if (_closed)
  27. throw exception("transaction is already closed", error_code::Unknown);
  28. _connection.execute(sRollback);
  29. _closed = true;
  30. }
  31. void transaction::begin()
  32. {
  33. static const statement sCommit("START TRANSACTION");
  34. _connection.execute(sCommit);
  35. }
  36. }