Я использую postgresql 11. Я думаю, что моя проблема связана с триггером, который не выполняет обновление, поэтому следующий триггер не запускается.
У меня есть таблица projet
со столбцами: projet_temps_doe
, projet_temps_etudes
, projet_temps_globale
.
Цель - обновить каждый столбец в зависимости от значений других столбцов.Идея такова: projet_temps_globale
= projet_temps_doe
+ projet_temps_etudes
.
У меня первый триггер на projet_temps_doe
, который отлично работает:
create function temps_globale_doe() returns trigger
language plpgsql
as
$$
begin
new.projet_temps_globale_doe := new.projet_temps_doe_gc_bts + new.projet_temps_doe_gc_nra;
return new;
end;
$$;
CREATE TRIGGER temps_globale_doe
BEFORE UPDATE OF projet_temps_doe_gc_bts, projet_temps_doe_gc_nra
ON public.projet
FOR EACH ROW
EXECUTE PROCEDURE public.temps_globale_doe();
У меня аналогичный триггер наprojet_temps_etudes
, который тоже отлично работает.
Тогда триггер, с которым я борюсь, на projet_temps_globale
:
create trigger maj_temps_globale_projet
before update of projet_temps_doe, projet_temps_etudes on projet
for each row
execute procedure maj_temps_globale_projet();
create or replace function maj_temps_globale_projet()returns trigger
language plpgsql
as
$$
begin
new.projet_temps_globale := new.projet_temps_doe + new.projet_temps_etudes;
raise info 'TEST!!';
return new;
end;
$$;
Когда projet_temps_doe
и / или projet_temps_etudes
обновляются через триггеры, мои последниетриггер не запускается.Однако, когда я вручную изменяю значения projet_temps_doe
и / или projet_temps_etudes
, срабатывает триггер maj_temps_globale_projet.
Я хочу извлечь из этого уроки, поэтому, если возможно, объясните мне, что я делаю здесь неправильно,или если моему подходу не хватает понимания.