PHP Postgres: получить последний идентификатор вставки
Я нашел еще пару вопросов по этой теме. Этот...
mysql_insert_id альтернатива postgresql
... и руководство, похоже, указывают, что вы можете называть lastval()
в любое время, и он будет работать, как ожидалось. Но этот...
Postgresql и PHP: является ли currval эффективным способом получения последней вставленной строки в многопользовательском приложении?
... похоже, что он должен быть внутри транзакции. Поэтому мой вопрос заключается в следующем: могу ли я просто ждать, пока мне нравится, прежде чем запрашивать lastval()
(без транзакции)? И является ли это надежным перед лицом многих параллельных соединений?
Ответы
Ответ 1
INSERT, UPDATE и DELETE в PostgreSQL имеют предложение RETURNING, что означает, что вы можете сделать:
INSERT INTO ....
RETURNING id;
Затем запрос вернет значение, которое он вставил для id для каждой вставленной строки. Сохраняет обратный переход к серверу.
Ответ 2
Да, функции последовательности предоставляют многопользовательские методы для получения последовательных значений последовательности из объектов последовательности.