gpt4 book ai didi

postgresql - 序列字段,跟踪主键/序列对的单个序列

转载 作者:行者123 更新时间:2023-11-29 11:43:59 28 4
gpt4 key购买 nike

我有一张用户上传的对象表。每个用户可以拥有任意数量的对象。我希望每个对象都有一个顺序标识符,如下所示:

USERNAME    OBJECTNAME    OBJID
Kerin cat 1
Kerin dog 2
Narcolepsy pie_tins 1
Kerin mouse 3

我希望 OBJID 是一个序列,但每个 USERNAME 字段单独跟踪序列号。我可以通过首先查询数据库并选择最高的 OBJID 然后将该值递增 1 并在我的 INSERT 中使用它来完成此操作,这可能很好,因为用户很难同时运行两个上传,但是查询开销和我做错的感觉让我想找到更好的方法。

最佳答案

如果您不需要它们是连续的,那么您可以向表中添加类型为 serial(或 bigserial)的 PK。每个用户名的数字仍然是唯一的,但实现起来会非常简单,而且你不会有 UUID 的丑陋。

您可以通过手册为每个用户名创建一个序列 CREATE SEQUENCE电话。然后,您可以添加 BEFORE INSERT trigger通过确定要使用的序列然后调用 nextval 来设置 objid在上面。如果您的用户名仅限于通常的 /[a-z][a-z0-9]*/ 模式,那么您可以将序列名称构建为类似 "seq_objid_username "并且触发器将能够很容易地找出要使用的序列;每个用户名序列可以通过用户表上的 INSERT 触发器创建。这种方法可行而且安全,因为它依赖于 PostgreSQL 现有的事务安全序列系统。

关于postgresql - 序列字段,跟踪主键/序列对的单个序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5768665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com