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
Если вы хотите получить значения данных из ЛЮБОГО запроса, вы делаете это всегда одинаково, стандартным способом:
- запрос
- выполнять
- получать
Надеюсь, это поможет.
Я не уверен насчет взаимодействия с 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') )");