diff --git a/libgnucash/backend/sql/gnc-commodity-sql.cpp b/libgnucash/backend/sql/gnc-commodity-sql.cpp index dad687701e..451b55a09d 100644 --- a/libgnucash/backend/sql/gnc-commodity-sql.cpp +++ b/libgnucash/backend/sql/gnc-commodity-sql.cpp @@ -217,8 +217,8 @@ GncSqlCommodityBackend::commit (GncSqlBackend* sql_be, QofInstance* inst) g_return_val_if_fail (sql_be != NULL, FALSE); g_return_val_if_fail (inst != NULL, FALSE); g_return_val_if_fail (GNC_IS_COMMODITY (inst), FALSE); - - return do_commit_commodity (sql_be, inst, FALSE); + auto in_be = instance_in_db(sql_be, inst); + return do_commit_commodity (sql_be, inst, !in_be); } /* ----------------------------------------------------------------- */ diff --git a/libgnucash/backend/sql/gnc-sql-backend.cpp b/libgnucash/backend/sql/gnc-sql-backend.cpp index 0c7e6af5e4..1a8af92069 100644 --- a/libgnucash/backend/sql/gnc-sql-backend.cpp +++ b/libgnucash/backend/sql/gnc-sql-backend.cpp @@ -811,6 +811,8 @@ GncSqlBackend::object_in_db (const char* table_name, QofIdTypeConst obj_name, /* WHERE */ PairVec values{get_object_values(obj_name, pObject, table)}; + /* We want only the first item in the table, which should be the PK. */ + values.resize(1); stmt->add_where_cond(obj_name, values); auto result = execute_select_statement (stmt); return (result != nullptr && result->size() > 0);