summaryrefslogtreecommitdiff
path: root/libodbcpp/modifycommand.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libodbcpp/modifycommand.cpp')
-rw-r--r--libodbcpp/modifycommand.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/libodbcpp/modifycommand.cpp b/libodbcpp/modifycommand.cpp
index 706b3fd..5e614b7 100644
--- a/libodbcpp/modifycommand.cpp
+++ b/libodbcpp/modifycommand.cpp
@@ -13,21 +13,27 @@ ODBC::ModifyCommand::~ModifyCommand()
unsigned int
ODBC::ModifyCommand::execute(bool anc)
{
+ if (connection.txIsAborted()) {
+ throw Error("Transaction has been aborted, not issuing any more commands");
+ }
RETCODE rc = SQLExecute(hStmt);
if (rc != SQL_SUCCESS) {
if (rc != SQL_NO_DATA || !anc) {
+ connection.abortTx();
throw Error(rc, SQL_HANDLE_STMT, hStmt, "%s: SQLExecute",
__FUNCTION__);
}
}
SQLINTEGER rows;
if ((rc = SQLRowCount(hStmt, &rows)) != SQL_SUCCESS) {
+ connection.abortTx();
throw Error(rc, SQL_HANDLE_STMT, hStmt, "%s: SQLRowCount",
__FUNCTION__);
}
if (rows > 0 || anc) {
return rows;
}
+ connection.abortTx();
throw Error("%s: No rows affected", __FUNCTION__);
}