postgresql nextval вопрос о последовательностях - PullRequest
1 голос
/ 03 февраля 2010

Я пытаюсь работать с postgresql nextval в PHP.Как заполнить скобки в третьей строке, чтобы заменить 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 ]

1 голос
/ 03 февраля 2010

Вы не сказали нам, что такое $DB переменная. Я полагаю, вы используете PDO.

Вопрос «Есть ли способ сохранить результат запроса в переменную php?» - это вопрос новичка, и на него легко ответить в руководстве .

Вы должны понимать, что (с точки зрения PHP) нет никакой разницы между

SELECT nextval('schemadb.audit_txn_seq')

и

SELECT xcolumn FROM xtable LIMIT 1

Если вы хотите получить значения данных из ЛЮБОГО запроса, вы делаете это всегда одинаково, стандартным способом:

  1. запрос
  2. выполнить
  3. получить

Надеюсь, это поможет.

0 голосов
/ 04 февраля 2010

Я не уверен насчет взаимодействия с SET CONSTRAINTS ALL DEFERRED, но вы пытались это сделать:

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

Вопрос теперь в том, что возвращает "undo_transaction"?Если при успешном завершении он вернет идентификатор транзакции, тогда все готово!

0 голосов
/ 03 февраля 2010

Попробуйте:

$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') )");
...