我有一个现有的表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中^^是可能的?
假设您在每行中都有唯一的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;