postgresql nextval вопрос о последовательностях

Я пытаюсь работать с 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 ответа

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

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

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

SELECT nextval('schemadb.audit_txn_seq')

а также

SELECT xcolumn FROM xtable LIMIT 1

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

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

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

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

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

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

Пытаться:

$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') )");
Другие вопросы по тегам