【发布时间】:2014-12-20 13:36:52
【问题描述】:
我正在尝试在 postgres 中编写一个触发器函数,当向表中添加一条记录时,它将更新多个其他表中的多条记录。
例如,我有架构“调查”和一个名为“a_household”的表。
在此架构中,有多个表具有引用家庭表 ID 的字段“hh_id”。
如果表的其他属性匹配,所有这些表的 hh_id 仅引用家庭表的 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 的值 贝基
【问题讨论】:
标签: postgresql triggers