在Postgres中创建自定义序列生成器以考虑列值

时间:2018-03-15 11:27:49

标签: postgresql

我在Postgres中有一个名为jobs的表,其中包含job_id,username,created_ts和其他与工作相关的信息。列job_id是串行类型。

...
job_id serial NOT NULL,
username character varying(32),
...

username表示创建作业的用户。用户只能看到他创建的作业。他也可以看到job_id。这使得用户可以看到随机的job_ids,而不是严格的序列。

我想让每个用户的序列从1开始。它必须是username的顺序。这将创建重复的job_id,但这没关系。

我已经提到https://www.postgresql.org/docs/9.5/static/sql-createsequence.html我无法找到按列值创建序列的任何方法。是否可以在Postgres中创建这样的序列生成器?

1 个答案:

答案 0 :(得分:1)

我不知道你是否可以用序列做到这一点,但除非有人能想到更好的东西,否则你可以删除序列,而是在INSERT上触发类似

的触发器

Python

只要你有适当的索引,它就应该非常快。虽然我可以预见并发问题。取决于您期望如何使用它。