gpt4 book ai didi

mysql - 如何在 Postgresql 中为每个用户创建顺序 ID

转载 作者:行者123 更新时间:2023-11-29 00:25:50 25 4
gpt4 key购买 nike

我正在尝试在 postgresql 中创建一个表来保存用户工作项。每个工作项在整个系统中都有一个唯一的 ID,但随后也会为该特定用户提供一个友好的顺序 ID。

到目前为止我一直在使用:

CREATE TABLE WorkItems
(
Id SERIAL NOT NULL PRIMARY KEY,
...
);

但我不知道如何为每个用户划分这个序列,也不知道如何用序列来划分。

所以我想让用户看到连续的友好 ID

User1: ids = 1, 2, 3 etc..User2: ids = 1, 2, 3, 4, 5 etc..

并且不必处理唯一 ID,但这些项目将具有 1-8 的唯一 ID。

我环顾四周,找不到关于这个主题的任何帖子。也许只是难以指定和搜索?

我是否应该将 LastWorkIdUsed 存储在用户列中,然后为他们的项目手动创建一个友好的 ID?似乎我不必担心并发和事务。生成数字时,是否有一种简单的方法可以将每个用户的 LastWorkIdUsed 传递给 Postgresql?

或者有没有办法为用户分配一个序列?

也许我的基本设计理念有误。在 SQLServer 或 MySQL 中如何做到这一点?

最佳答案

你说你有一个全局唯一的 key 。您可以使用它来解决并发问题。如果您允许用户工作项编号为空,您可以先创建工作项,然后执行类似这样的操作来为其分配一个“友好”编号。 (T-SQL方言,@workItemID是全局唯一ID):

Update wi
set friendlyNumber = coalesce(
(select max(friendlyNumber)+1 from WorkItem wi2
where wi2.userID = wi.userID and not wi2.friendlyNumber is null)
, 1)
From WorkItem wi
where workItemID = @workItemID and friendlyNumber is null

然后像这样找出数字:

select friendlyNumber from WorkItem where workItemID = @workItemID

关于mysql - 如何在 Postgresql 中为每个用户创建顺序 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18963682/

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