postgresql中的范围序列

Posted

技术标签:

【中文标题】postgresql中的范围序列【英文标题】:Scoped sequence in postgresql 【发布时间】:2018-04-30 14:59:59 【问题描述】:

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

我查看了在 postgresql 文档中创建序列的文档。但是,我不知道如何指定,数字在表中的 team_id 级别上应该是唯一的。

不确定这是否可能。

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

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

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

【问题讨论】:

请参考:***.com/a/6632280/7998591 或 ***.com/a/11496945/7998591 每个团队的发票号码是否没有空白?您希望数据库创建发票编号吗?你看过默认属性吗?最后,你有没有尝试过 PostgreSQl 域类型。 @kaushikNayak,在创建序列时使用“OWNED BY”属性不会为每个团队分配唯一序列,这是我目前的要求。 【参考方案1】:

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

【讨论】:

以上是关于postgresql中的范围序列的主要内容,如果未能解决你的问题,请参考以下文章

Postgresq9.6主从部署

将 json 对象存储到 postgresql 中的数据类型是啥?

postgresql 安装

Pacemaker+Corosync搭建PostgreSQL集群

PostgreSQL备机checkpoint

postgresql数据库怎么查询所有的序列名