alter table a_table add new_col text unique;
update a_table set new_col = col3;
-- clean up any null values in new_col; (there is nothing saying
alter table a_table alter column new_col set not null;
如果需要长期创建触发器函数和触发器以管理new_col:
-- set new_col column
create or replace function new_col()
returns trigger
language plpgsql
as $$
begin
new.new_col = coalesce(new.new_col, new.col3, old.new_col, ''); -- always on update ???
return new;
end;
$$;
create trigger a_table_biur
before insert or update
on a_table
for each row execute function new_col();
1条答案
按热度按时间h22fl7wq1#
你不能直接得到你想要的;默认表达式不能引用另一列。您可以做的是使新列 * 唯一 * 但可以为空,然后更新值,最后使列 * 不为空 *。如果需要,您可以创建触发器来维护新列。(请参阅demo)
如果需要长期创建触发器函数和触发器以管理
new_col
:触发器函数使用了必要的最小逻辑,不会满足每个条件。您需要对此进行评估。