小编ale*_*xis的帖子

pqxx重用/重新激活工作事务

我想使用pqxx :: work进行多次查询和承诺,而commit函数阻止我再次使用它.这是一个简单的例子:

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();
}
Run Code Online (Sandbox Code Playgroud)

当我尝试插入'bar'值时,在提交之后,我得到一个pqxx :: usage_error: Error executing query . Attempt to activate transaction<READ COMMITTED> which is already closed

提交更改后,如何避免关闭连接?我可以用相当于G_work = pqxx :: work(G_connexion)或其他的成功重置G_work吗?此外,一个错误的请求不应该崩溃整个过程,只是正在进行的过程(G_work在失败后仍然可用).

我必须保持相同的变量G_Work,因为它将是一个从程序中的许多地方调用的全局变量.

c++ postgresql libpqxx

8
推荐指数
1
解决办法
5420
查看次数

标签 统计

c++ ×1

libpqxx ×1

postgresql ×1