Я пытаюсь написать триггерную функцию в postgres, которая будет обновлять несколько записей в нескольких других таблицах при добавлении записи в таблицу.Обновление нескольких записей в нескольких таблицах с помощью триггера
Например, у меня есть «обзор» схемы и таблица под названием «a_household».
В этой схеме есть несколько таблиц с полем «hh_id», которые ссылаются на идентификатор домашней таблицы.
hh_id всех этих таблиц ссылается только на идентификатор домашней таблицы, если соответствуют другие атрибуты таблиц.
В настоящее время мой не удалось кодирования выглядит следующим образом:
DECLARE
tables text[] = ARRAY['b_member','f_firewood'];
table_name text;
r record;
BEGIN
FOREACH table_name IN ARRAY tables
LOOP
INSERT INTO survey.table_name(hh_id) values (NEW.id)
SELECT * FROM survey.table_name
WHERE survey.table_name.a= NEW.b;
END LOOP;
END;
Я уверен, не полностью - любые советы оценили.
Моя вторая попытка (после прочтения ниже ответа) было:
DECLARE
tables text[] = ARRAY['b_member'];
table_name text;
BEGIN
if tg_op='INSERT' then
FOREACH table_name IN ARRAY tables
LOOP
EXECUTE 'UPDATE ' || 'survey.' || table_name || ' SET hh_id = '||NEW.id||' FROM household.a_household WHERE (select survey.b_member.odk_parentkey from survey.b_member
where survey.b_member.odk_key = "'||NEW.odk_key||'");';
END LOOP;
end if;
return new;
END;
, но я вернулся сообщение об ошибке «столбец„HGD“не существует. Это значение: NEW.odk_key Becky