1

我正在尝试在 PHP 中使用 postgresql 'nextval'。如何填写第三行的括号,以便将 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)');

谢谢!

4

3 回答 3

1

你没有告诉我们什么是$DB可变的。我猜你正在使用 PDO。

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

您必须了解,(从 PHP 的角度来看)两者之间没有区别

SELECT nextval('schemadb.audit_txn_seq')

SELECT xcolumn FROM xtable LIMIT 1

如果您想从任何查询中获取数据值,您总是以相同的标准方式进行操作:

  1. 询问
  2. 执行
  3. 拿来

希望有帮助。

于 2010-02-03T18:56:08.887 回答
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') )");
于 2010-02-03T01:59:03.603 回答
0

我不确定与 SET CONSTRAINTS ALL DEFERRED 的交互,但您是否尝试过这样做:

SELECT schemadb.undo_transaction(nextval('schemadb.audit_txn_seq'))

现在的问题是“undo_transaction”返回什么?如果它在成功完成后返回交易 ID,那么你就可以开始了!

于 2010-02-03T23:44:13.153 回答