如何将数组列添加到包含同一 table 中另一列的值的 table

How to add an array column to a table containing values from another column in the same table

考虑table

CREATE TABLE users
(
    user_id VARCHAR(128) PRIMARY KEY,
)

添加 auth_identities varchar(128)[] 列后,我不想用 user_id 中的值填充该列(因为我们希望将来支持多个不同的用户身份)。

我设法做到这一点的一种方法是

ALTER TABLE users
    ADD auth_identities VARCHAR(128)[];

UPDATE users u SET auth_identities=array((SELECT user_id FROM users u0 WHERE u0.user_id = u.user_id));

不过,我不是特别喜欢 UPDATE 的样子。有什么办法让它更地道一点吗?

不需要 sub-select,只需从现有列构建一个数组:

UPDATE users 
  SET auth_identities = array[user_id];