PHP Postgres: получить идентификатор последней вставки - PullRequest
14 голосов
/ 26 июня 2011

Я нашел пару других вопросов по этой теме. Этот ...

mysql_insert_id альтернатива для postgresql

... и руководство , кажется, указывает на то, что вы можете позвонить lastval() в любое время, и оно будет работать как положено. Но этот ...

Postgresql и PHP: является ли currval эффективным способом получения последней вставленной строки id в многопользовательском приложении?

... кажется, что это должно быть в транзакции. Поэтому мой вопрос заключается в следующем: могу ли я просто ждать столько, сколько захочу, прежде чем запрашивать lastval() (без транзакции)? И это надежно перед лицом многих одновременных соединений?

Ответы [ 2 ]

31 голосов
/ 27 июня 2011

INSERT, UPDATE и DELETE в PostgreSQL имеют предложение RETURNING, что означает, что вы можете сделать:

INSERT INTO ....
RETURNING id;

Затем запрос вернет значение, которое он вставил для идентификатора для каждой вставленной строки.Сохраняет туда-обратно на сервер.

6 голосов
/ 26 июня 2011

Да, функции последовательности предоставляют многопользовательские безопасные методы для получения последовательных значений последовательности из объектов последовательности.

...