Как сохранить вычисление в качестве значения по умолчанию в столбце таблицы PostgreSQL - PullRequest
0 голосов
/ 03 июля 2018

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

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

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

Пример:

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

цена: 5

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

1 Ответ

0 голосов
/ 03 июля 2018

Вы должны сделать итоговый столбец 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();
...