我有一个相当大的 PostgreSQL 13 表,我需要添加一个新TEXT
列,对于这个新列,我想添加一个GENERATED ALWAYS
具有以下定义的列:
ALTER TABLE my_table
ADD COLUMN text_col TEXT,
ADD COLUMN text_col__tsvector GENERATED ALWAYS AS (to_tsvector('pt_unaccent', "text_col")) STORED;
然而,当我运行上面的 DDL 时,需要很长时间才能完成。据我了解,这是因为text_col__tsvector
即使是,也需要为表中的所有行运行text_col
表达式NULL
。
我的问题是:知道该列将始终以(未定义默认值)text_col
开头,有没有办法让 postgres 在创建时跳过第一代部分?或者更改列的表达式部分 ( )以忽略值?NULL
text_col__tsvector
to_tsvector('pt_unaccent', "text_col")
GENERATED ALWAYS
NULL