Mercurial > hg > orthanc-databases
diff Framework/PostgreSQL/PostgreSQLTransaction.cpp @ 216:fbb52129158a
TransactionType given to PostgreSQLTransaction constructor
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 26 Mar 2021 17:47:56 +0100 |
parents | ab96698c73a3 |
children | d1b124d116c1 |
line wrap: on
line diff
--- a/Framework/PostgreSQL/PostgreSQLTransaction.cpp Fri Mar 26 17:32:29 2021 +0100 +++ b/Framework/PostgreSQL/PostgreSQLTransaction.cpp Fri Mar 26 17:47:56 2021 +0100 @@ -29,11 +29,12 @@ namespace OrthancDatabases { - PostgreSQLTransaction::PostgreSQLTransaction(PostgreSQLDatabase& database) : + PostgreSQLTransaction::PostgreSQLTransaction(PostgreSQLDatabase& database, + TransactionType type) : database_(database), isOpen_(false) { - Begin(); + Begin(type); } @@ -55,7 +56,7 @@ } - void PostgreSQLTransaction::Begin() + void PostgreSQLTransaction::Begin(TransactionType type) { if (isOpen_) { @@ -64,7 +65,21 @@ } database_.Execute("BEGIN"); - database_.Execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"); + + switch (type) + { + case TransactionType_ReadWrite: + database_.Execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE"); + break; + + case TransactionType_ReadOnly: + database_.Execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY"); + break; + + default: + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + isOpen_ = true; }