自动生成新的非空列的唯一用户名

问题描述 投票:0回答:1

我有一个现有的表user_accounts,并希望添加一个新的列username必须是唯一的和不可空的。对于现有用户,我认识到我必须使用数据填充列。我想填充列,使其像每个行的'username1','username2'.....我想做这样的事情:

BEGIN;
i =0;
ALTER TABLE user_accounts ADD COLUMN username character varying(80);
UPDATE mytable SET mycolumn = username + i;
i++;
ALTER TABLE user_accounts ALTER COLUMN username SET NOT NULL;
COMMIT;

在postgres ddl中^^是可能的?

sql postgresql ddl
1个回答
0
投票

假设您在每行中都有唯一的ID,您可以:

update user_accounts
    set mycolumn = 'username' || seqnum;
    from (select ua.*, row_number() over (order by id) as seqnum
          from user_accounts ua
         ) ua
    where ua.useraccountid = user_accounts.useraccountid;
© www.soinside.com 2019 - 2024. All rights reserved.