Здравствуйте!
В общем процедура и триггер
CREATE FUNCTION advs__up_is_paid_mode() RETURNS TRIGGER
AS $$
BEGIN
IF NEW.balance<NEW.amount THEN
UPDATE advs SET is_paid_mode=0 WHERE id=NEW.id;
ELSE
UPDATE advs SET is_paid_mode=1 WHERE id=NEW.id;
END IF;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER advs__up_is_paid_mode__trigger
AFTER INSERT OR UPDATE
ON advs
FOR EACH ROW
EXECUTE PROCEDURE advs__up_is_paid_mode();
В двух словах что здесь происходит:
При каждом обновлении проверяется если
balance<
amount то
is_paid_mode=0 иначе
1.
Но при апдейте получаю ошибку про
stack depth limit exceeded. Подозреваю что эта процедура впадает в рекурсию.
Как быть? Спасибо.