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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta