在 Rails 应用程序中,我需要一个唯一的、连续的(无间隙)整数源用作序列号。它必须是持久的并允许并发访问。
数据库自动增量是不够的,因为大多数不保证“无间隙”属性。
在直接的 SQL 中,我将创建一个单行表并说(在 PostgreSQL 中)类似:
update sequence set value = value + 1 returning value
这显然是 SQL 世界中的标准做法。存在参考。
在 ActiveRecord 中,我轻松地创建了模型.increment!
并.increment_counter
在文档中找到了模型。但我不知道如何以原子方式检索增加的值。锁和交易似乎没有帮助。