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