pqxx reutilizar / reactivar una transacción de trabajo
Quiero usar un pqxx :: work para consultas múltiples y compromisos, mientras que elcometer La función me impide volver a usarlo. Aquí hay un ejemplo simple:
pqxx::connection G_connexion("dbname=basetest user=usertest password=1234");
pqxx::work G_work(G_connexion);
int main(int argc, char* argv[]) {
G_work.exec("insert into test.table1(nom) VALUES('foo');");
G_work.commit();//until here, no problem
G_work.exec("insert into test.table1(nom) VALUES('bar');"); //error, transaction already closed
G_work.commit();
}
Cuando intento insertar el valor 'bar', después de la confirmación, obtengo un pqxx :: use_error:Error executing query . Attempt to activate transaction<READ COMMITTED> which is already closed
¿Cómo puedo evitar cerrar la conexión después de confirmar los cambios? ¿Puedo restablecer G_work con un equivalente sucesivo de G_work = pqxx :: work (G_connexion) u otro? Además, una solicitud incorrecta no debe bloquear todo el proceso, solo el que está en proceso (G_work aún se puede usar después de una falla).
Tengo que mantener la misma variable G_Work porque será una variable global llamada desde muchos lugares en el programa.