Как создать триггер с условием.?
Нужно чтобы триггер срабатывал, когда обновляется определенное поле.
Например, чтобы при обновлении поля example_field обновились все поля example_field со значением обновляемого поля example_field (извините за тавтологию).
create trigger c_custom_field
after update
of custom_field
on contact
for each row
execute procedure contact_custom_field();
create function contact_custom_field() returns trigger
language plpgsql
as
$$
BEGIN
UPDATE contact
SET custom_field = NEW.custom_field
WHERE user_id = OLD.user_id;
RETURN NEW;
END;
$$;
Попытка обновить:
UPDATE contact
SET custom_field = '{"id":10,"value":780}'
WHERE id=785;
Ответ:
[54001] ERROR: stack depth limit exceeded Hint: Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate. Where: SQL statement "UPDATE contact SET custom_field = NEW.custom_field WHERE user_id = OLD.user_ ...