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中的范围序列的主要内容,如果未能解决你的问题,请参考以下文章
将 json 对象存储到 postgresql 中的数据类型是啥?