У меня есть тестовая таблица с тремя столбцами (файл, qty, qty_total). Я буду вводить несколько строк, например, insert into test_table (file,qty) VALUS (A,5);
. То, что я хочу, это для commit, так как триггер принимает значение из qty и добавляет его в qty_total. Как только это произойдет, это значение будет обновляться по мере демонстрации этого примера. Update test_table set qty = 10 where file = A;
Итак, qty_total теперь 15. СпасибоPSQL Добавить значение из строки в другое значение в той же строке с помощью триггеров
0
A
ответ
0
Удалось решить это самостоятельно. Я создал функцию триггера `CREATE FUNCTION public.qty_total() ВОЗВРАТ вызвать ЯЗЫК 'plpgsql' COST 100,0 VOLATILE НЕ непротекаемый AS $ BODY $
BEGIN
IF TG_OP = 'UPDATE' THEN
NEW."total" := (OLD.total + NEW.col2);
RETURN NEW;
ELSE
NEW."total" := NEW.col2;
RETURN NEW;
END IF;
END;
$ BODY $;
ALTER FUNCTION public.qty_total() OWNER TO postgres; Это вызвано триггером CREATE TRIGGER qty_trigger BEFORE INSERT OR UPDATE ON public.test FOR EACH ROW EXECUTE PROCEDURE qty_total();
теперь, когда я вставляю новый код и значение, значение копируется в итоговое значение, когда оно обновляется, значение добавляется к сумме, и у меня есть мой новый qty_total. Это может не иметь лучшей ошибки в нем, но поскольку я передаю данные с php, я рад убедиться, что ошибки пойманы и удалены.