如何增加数据库中的字段,以便即使数据库的数千个连接尝试一次增加它 - 最后也总是1000(如果从零开始)。
我的意思是,没有两个连接增加相同的数字,导致增量丢失。
如何同步并确保数据一致?这是一个必须的商店程序吗?数据库"锁定"?怎么做的?
答案 0 :(得分:1)
你要找的是Postgres SEQUENCE
。
您拨打nextval('sequence_name')
以获取序列中的下一个号码。
根据the docs, 序列的设计考虑了并发性:
为了避免阻塞从同一序列获取数字的并发事务,永远不会回滚nextval操作;也就是说,一旦获取了一个值,它就被认为是使用的,即使稍后执行nextval的事务也会中止。这意味着中止的事务可能会在指定值的序列中留下未使用的“漏洞”。
编辑:
如果您正在寻找无间隙序列,那么2006年有人发布了PostgreSQL邮件列表的解决方案:http://www.postgresql.org/message-id/44E376F6.7010802@seaworthysys.com。似乎还有关于锁定等问题的冗长讨论。
即使从来没有接受过的答案,也会在SO上询问无间隙序列问题: postgresql generate sequence with no gap