使用 libpqxx,是否可以将一个已准备好exec
但尚未经过测试的准备好的语句commit
存储在 a 中result
以供以后准备好的语句中使用?
如果是这样,如何做到这一点?
代码
为了便于阅读,我已将其剥离,但这基本上是我想要做的:
void prepare_write_parent_table(connection_base &c){
try
{
c.prepare("write_parent_table",
"INSERT INTO parent_table (column_1) "
"SELECT $1 "
"RETURNING id"
)
("character", pqxx::prepare::treat_string);
}
catch (const exception &e)
{
cerr << e.what() << endl;
}
}
string write_parent_table(transaction_base &t, string data){
try
{
result parent_table_result = t.prepared("write_parent_table")(data).exec();
return parent_table_result[0][0].c_str();
}
catch (const exception &e)
{
cerr << e.what() << endl;
return "";
}
}
void prepare_write_child_table(connection_base &c){
try
{
c.prepare("write_child_table",
"INSERT INTO child_table (parent_table_id, column_a) "
"SELECT $1, $2 "
)
("character", pqxx::prepare::treat_string)
("character", pqxx::prepare::treat_string);
}
catch (const exception &e)
{
cerr << e.what() << endl;
}
}
return
检查from以write_parent_table
查看if( == "")
. 如果不是,则继续;否则,我会commit
让它失败,或者如果可能的话,最好取消交易;但是,如果可能的话,我还不知道该怎么做。
per中总会有不确定的INSERT
s数量。child_table
parent_table
INSERT