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.