pqxx reutilizar / reativar uma transação de trabalho

Eu quero usar um pqxx :: work para consultas e compromissos múltiplos, enquanto ocometer, entregar função me impedir de usá-lo novamente. Aqui está um exemplo simples:

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();
}

Quando tento inserir o valor 'bar', após a confirmação, recebo um pqxx :: use_error:Error executing query . Attempt to activate transaction<READ COMMITTED> which is already closed

Como evitar fechar a conexão depois de confirmar as alterações? posso redefinir o G_work com um equivalente sucessivo de G_work = pqxx :: work (G_connexion) ou outro? Além disso, uma solicitação incorreta não deve travar o processo inteiro, apenas a que está em processo (o G_work ainda pode ser usado após uma falha).

Eu tenho que manter a mesma variável G_Work, porque será uma variável global chamada de vários lugares do programa.

questionAnswers(1)

yourAnswerToTheQuestion