PostgreSQL中最后插入的行ID

时间:2011-05-09 10:56:41

标签: postgresql lastinsertid

我正在使用postgresql数据库。以前的表由我的老年人创建,他们没有使用序列概念,他们手动添加数据。现在我需要用我的java应用程序插入数据。因为我需要最后插入ID。 我无权添加序列。
请有人帮助我。
提前谢谢......

1 个答案:

答案 0 :(得分:2)

理想情况下,您需要获得创建所需序列的许可。

如果它不是某种官僚理由的选择,您可能会设法使用咨询锁来解决并发问题。伪代码:

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)