Возможно, вы упустили важную информацию: какая версия Postgres у вас установлена? Если у вас есть или вы можете обновить до версии 12 , вы можете переопределить свою таблицу так, чтобы столбец transform_business стал сгенерированным столбцом. Тогда, например:
create table table_name(
id bigint generated always as identity
, register_name text
, bn_name text
, status text
, transform_name text generated always as ( upper(replace(bn_name,' ',''))) stored
) ;
Если вам нужно сохранить текущие данные, вы можете:
alter table table_name drop column transform_name;
alter table table_name add transform_name text generated always as ( upper(replace(bn_name,' ',''))) stored;
Этот вариант будет довольно медленным, особенно если таблица большая, но она разовый процесс. Любая из этих опций даст вам «ограничение», что transform_name не может быть обновлено напрямую, но будет автоматически обновляться при обновлении bn_name.
Тогда ваша команда копирования просто загрузит register_name, bn_name и status.