У меня есть таблица для истории в таблице 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 ...