关于序列的postgresql nextval问题

时间:2010-02-03 01:43:31

标签: php postgresql sequence nextval

我正在尝试使用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)');

谢谢!

3 个答案:

答案 0 :(得分:1)

您没有告诉我们$DB变量是什么。我想你正在使用PDO。

问题“无论如何将查询结果存储到php变量中”是一种初学者问题,并且在the manual中很容易回答。

你必须明白,(从PHP的角度来看)

之间没有区别
SELECT nextval('schemadb.audit_txn_seq')

SELECT xcolumn FROM xtable LIMIT 1

如果您想从任何查询中获取数据值,您可以采用相同的标准方式:

  1. 查询
  2. 执行
  3. 希望有所帮助。

答案 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,那么你就好了!