1

我正在使用 postgresql 数据库。以前的表是我的前辈创建的,它们没有使用序列概念,而是手动添加数据。现在我需要用我的 java 应用程序插入数据。为此,我需要最后插入的 ID。我无权添加序列。
请任何人帮助我。
提前致谢...

4

1 回答 1

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)
于 2011-05-09T12:00:20.217 回答