我正在尝试使用PHP中的postgresql'sextval'。如何在第三行填写括号,以便将TXN_ID替换为nextval('schemadb.audit_txn_seq')的值?
$DB->query("SELECT nextval('schemadb.audit_txn_seq')");
$DB->query('SET CONSTRAINTS ALL DEFERRED');
$DB->query('SELECT schemadb.undo_transaction(TXN_ID)');
谢谢!
答案 0 :(得分:1)
您没有告诉我们$DB
变量是什么。我想你正在使用PDO。
问题“无论如何将查询结果存储到php变量中”是一种初学者问题,并且在the manual中很容易回答。
你必须明白,(从PHP的角度来看)
之间没有区别SELECT nextval('schemadb.audit_txn_seq')
和
SELECT xcolumn FROM xtable LIMIT 1
如果您想从任何查询中获取数据值,您可以采用相同的标准方式:
希望有所帮助。
答案 1 :(得分:0)
尝试:
$DB->query("SELECT nextval('schemadb.audit_txn_seq')");
$DB->query('SET CONSTRAINTS ALL DEFERRED');
$DB->query("SELECT schemadb.undo_transaction( currval('schemadb.audit_txn_seq') )");
答案 2 :(得分:0)
我不确定与SET CONSTRAINTS ALL DEFERRED的交互,但您是否尝试过这样做:
SELECT schemadb.undo_transaction(nextval('schemadb.audit_txn_seq'))
现在的问题是“undo_transaction”返回了什么?如果它在成功完成后返回交易ID,那么你就好了!