Последний вставленный идентификатор строки в PostgreSQL - PullRequest
1 голос
/ 09 мая 2011

Я использую базу данных postgresql.И предыдущие таблицы, которые созданы моими старшими, и они не используют концепцию последовательности, они добавили данные вручную.Теперь мне нужно вставить данные с помощью Java-приложения.для этого мне нужен последний вставленный ID. У меня нет разрешения на добавление последовательности.
Пожалуйста, кто-нибудь, помогите мне.
заранее спасибо ...

1 Ответ

2 голосов
/ 09 мая 2011

В идеале вы бы запросили разрешение на создание необходимых последовательностей.

Если это не вариант по какой-то бюрократической причине, вам, возможно, удастся обойти проблемы параллелизма, используя консультативные блокировки. Псевдо-код:

loop
select id as last_id, pg_try_advisory_lock('yourtable'::regclass, id) as locked
from yourtable
order by id desc limit 1

 if not locked then sleep .01 else exit end if
end loop

new_id = last_id + 1
insert...

select pg_advisory_unlock('yourtable'::regclass, last_id)
...