我有一个现有的表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中可以使用以下内容吗?
答案 0 :(得分: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;