Как мне получить идентификатор из другой таблицы в триггере? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть таблица для истории в таблице a_b при обновлении, поэтому я решил сделать триггер, который выглядит следующим образом:

CREATE OR REPLACE FUNCTION public.history_a_b()
  RETURNS trigger AS
$BODY$
BEGIN
    INSERT INTO history_a_b (
        b_id, 
        quantity, 
        history_a_id)
    VALUES (
        OLD.a_id,
        OLD.quantity,
        ?? [1]);
        RETURN NEW;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.history_a_item()
  OWNER TO postgres;

[1]: здесь я не знаю, как получить идентификатор из другой таблицы, потому что при обновлении таблицы a_b будет сгенерирован триггер, предыдущие данные будут отправлены в history_a_b

Генерация необходимого идентификатора происходит из обновлениятаблица по триггеру:

CREATE OR REPLACE FUNCTION public.before_update_a()
  RETURNS trigger AS
$BODY$
BEGIN
    INSERT INTO history_a (
        key, 
        action_date, 
        duration,
        previous_a_id
        )
    VALUES (
        OLD.key,
        OLD.action_date,
        OLD.duration,
        OLD.id);
        RETURN NEW;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.before_update_a()
  OWNER TO postgres;

Когда я думаю, что [1] должно быть NEW.history_a.id, но мое обновление находится в таблице a_b ...

...