и выполнялась функция которая помнит предыдущее значение? Сейчас ostatok высчитывается каждый раз занаво, не учитывая предыдущий ostatok.
CREATE TABLE sum
(
"zapas" integer DEFAULT 0,
"izrashod" integer DEFAULT 0,
"ostatok" integer DEFAULT 0
);
CREATE OR REPLACE FUNCTION add_sum() RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
UPDATE sum SET ostatok = ostatok + NEW.zapas - New.izrashod;
RETURN NEW;
END IF;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER first_triger
AFTER INSERT ON sum FOR EACH ROW EXECUTE PROCEDURE add_sum ();
Что значит "помнит"? В триггерах есть виртуальная таблица OLD, можно из неё взять старое значение.
А почему Insert? При инсерте старого значения нет. Своеобразный солюшен. У вас этот код вообще срабатывает? Из какого кода он вызывается?
Обсуждают сегодня