Как сохранить расчет как значение по умолчанию в столбце таблицы PostgreSQL

У меня есть таблица PostgreSQL с тремя столбцами: количество, цена и итого.

Итого сохраняет вычисление: итого = количество * цена.

Я хотел бы сохранить этот расчет как значение по умолчанию для столбца итого. Excel может это сделать (я знаю, что это не то же самое), поэтому я думаю о чем-то подобном.

Пример:

количество: 2

цена: 5

всего: 10 (количество x цена)


person Roby Sottini    schedule 03.07.2018    source источник


Ответы (1)


Вы должны сделать общий столбец NULL-способным (разрешить значения NULL). Затем добавьте триггер для INSERT и UPDATE, который будет вычислять значение NEW.total, если оно равно NULL. Однако я бы посоветовал не использовать вычисляемые столбцы в вашей базе данных — всегда лучше выполнять эти вычисления на стороне клиента.

CREATE FUNCTION tr_insert (
)
RETURNS trigger AS
$body$
BEGIN
  IF NEW.total IS NULL THEN
    NEW.total = NEW.quantity * NEW.price;
  END IF;
  RETURN NEW;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER;

CREATE TRIGGER task_main_tr
  BEFORE INSERT OR UPDATE 
  ON public.task_main

FOR EACH ROW 
  EXECUTE PROCEDURE tr_insert();
person IVO GELOV    schedule 03.07.2018