Я пытаюсь работать с 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)');
Благодаря!
Вы не сказали нам, что такое переменная $DB
. Думаю, вы используете PDO.
Вопрос «В любом случае, чтобы сохранить результат запроса в php-переменную», это вопрос типа beginner, и он легко объясняется в руководстве .
Вы должны понимать, что (с точки зрения PHP) нет никакой разницы между
SELECT nextval('schemadb.audit_txn_seq')
а также
SELECT xcolumn FROM xtable LIMIT 1
Если вы хотите получать значения данных из ЛЮБОГО запроса, вы делаете это всегда одним и тем же стандартным способом:
Надеюсь, это поможет.
Пытаться:
$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') )");
Я не уверен в взаимодействии с SET CONSTRAINTS ALL DEFERRED, но вы пробовали это сделать:
SELECT schemadb.undo_transaction(nextval('schemadb.audit_txn_seq'))
Вопрос в том, что возвращает «undo_transaction»? Если он вернет идентификатор транзакции при успешном завершении, то вам хорошо идти!