postgresql 中的作用域序列

Scoped sequence in postgresql

我想为每个团队生成唯一的发票编号。 我想让它由 postgresql 数据库自动生成。

我查看了 postgresql 文档中有关创建序列的文档。但是,我不知道如何指定 table.

中 team_id 级别的数字应该是唯一的

不确定这是否可能。

目前,我正在通过这样的代码创建下一个数字 team.invoices.maximum(:invoice_number).to_i +

为了处理并发,我在发票 table(team_id、invoice_number)上创建了唯一索引。这将防止在团队级别创建重复号码。

但是,我希望这是从 postgresql 本身生成的。

我无法从 postgresql 中找到直接的解决方案。 但是,我发现这个 gem 称为 sequenced,它帮助我创建了支持并发事务的作用域序列。