我有一个查询,我运行从多个表中提取数据,这些表是问卷调查插件Moodle的一部分。
这会返回一个视图。 (将此视图加入另一个用于php搜索)
我想要的是一个列app_ref
,其中插入了一个引号,以便在同一视图中复制到另一列ref_number
。
ref_number|app_ref
1234
2345
我已经google了,我知道我需要使用触发器,但我从未使用过触发器/构建的触发器(学习PostgreSQL),因此我不确定是否已阅读PostgreSQL site,是触发器是在BEFORE之前还是之后运行?
答案 0 :(得分:0)
如果我理解正确,您希望更新不可更新的视图,因为它从多个表中进行选择。
首先,您可以编写一个执行所需更新的过程:
CREATE OR REPLACE FUNCTION my_view_update()
RETURNS trigger AS
$BODY$
BEGIN
-- Here comes your SQL to handle your ref_number and app_ref issue
-- use NEW.app_ref or OLD.app_ref to access values
RETURN NEW;
END
$BODY$
然后,您可以告诉视图执行您的功能而不是"更新"像这样:
CREATE TRIGGER my_update
INSTEAD OF UPDATE
ON my_view
FOR EACH ROW
EXECUTE PROCEDURE my_view_update;