У меня уже есть таблица:
cotizacion(idCot(PK), unit_price,unit_price_taxes)
Мне нужно преобразовать unit_price_taxes в сгенерированный столбец, который равен unit_price * 1.16. Проблема в том, что я не могу найти инструкцию alter table, которая даст мне это. Удаление таблицы и ее повторное создание - не вариант, поскольку эта таблица уже глубоко связана с остальной базой данных, и повторная вставка всех записей на данный момент невозможна.
Я пробовал следующее:
ALTER TABLE cotizacion
alter column unit_price_taxes set
GENERATED ALWAYS AS (unit_price*1.16) STORED;
Но не работает. Кто-нибудь знает, как это сделать и возможно ли это вообще? Я бы не хотел создавать новый столбец.
Спасибо!
** EDIT: Я также пробовал следующую реализацию триггера:
CREATE OR REPLACE FUNCTION calculate_price_taxes()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
declare pu money;
begin
select unit_price from cotizacion into pu
where idCot = new."idCot";
update cotizacion
set unit_price_taxes = pu * (1.16)
where idCot = new."idCot";
return new;
end;
$function$
;
И удаление триггера:
Create or replace trigger price_taxes
after update on cotizacion
for each row
execute procedure
calculate_price_taxes()