我正在使用c ++ 4.8(可用4.9)和pqxx驱动程序版本.4.0.1.postgresdb是最新稳定的.
我的问题是复杂性和资源平衡:
我需要执行insert to database(并且有可选的pqxx :: result)和id,因为表id是基于nextval(table_seq_id)
是否可以获得插入行的id?有一个解决方法可以向db询问有关currentvalue的顺序,只需使用currentvalue + 1(或+ n)插入查询,但这需要执行"insert and ask"链.
Db应该能够存储超过6K的大型请求/per.sec.所以我想问一下id尽可能不频繁.批量插入不是一种选择.
我有很多代码以某种方式执行完全相同的操作(继承的代码),并且我希望在重新编写代码时压缩代码而不会丢失功能.例如,让我们看看以下函数:
fnc(largetype & a, largetype & b) { f(A); f(B); };
fnc(largetype && a, largetype & b) { f(A); f(B); };
fnc(largetype & a, largetype && b) { f(A); f(B); };
fnc(largetype && a, largetype && b) { f(A); f(B); };
Run Code Online (Sandbox Code Playgroud)
所有这些都做了完全相同的事情,但参数可以是rvalues或lvalues而不会破坏函数逻辑.我希望允许用户传递任何适合问题的内容,但我也不想一块一块地复制粘贴所有代码.我可以这样做:
fnc(largetype & a, largetype & b) { f(A); f(B); };
fnc(largetype && a, largetype & b) { fnc(a,b) };
fnc(largetype & a, largetype && b) { fnc(a,b) };
fnc(largetype && a, largetype && b) { fnc(a,b) };
Run Code Online (Sandbox Code Playgroud)
这在技术上是正确的,尤其是内联,但对我来说似乎不对.有没有其他更好的方法来实现这样的效果? …