当更新视图如何更新表?(How to update table when view is updat

2019-07-30 14:50发布

我想,当她的视图更新更新表。 我使用PostgreSQL / PostGIS的。

我创建视图。

CREATE VIEW filedata_view
AS SELECT num, id, ST_TRANSFORM(the_geom,900913)
FROM filedata

现在,它的更新时,我想这个数据来更新表。 但我heared触发不能在视图中puted。 那么,如何做到这一点?

现在,我使用这个功能

CREATE OR REPLACE FUNCTION update_table() RETURNS TRIGGER AS ' 
BEGIN 
UPDATE filedata SET id=NEW.id, the_geom=ST_TRANSFORM(NEW.st_transform,70066) where num=NEW.num ;
END;
' LANGUAGE plpgsql;

没关系。 但另一个问题。 如何添加触发器来查看我这样做

CREATE TRIGGER up_table AFTER UPDATE ON filedata_view
FOR EACH ROW EXECUTE PROCEDURE update_table ();

但得到的错误

ERROR: "filedata_view" is not a table.

UPDATE

如何设置列名AS SELECT num, id, ST_TRANSFORM(the_geom,900913)如果我使用这个我得到列: numidst_transform 。 如何设置第三列的名字the_geom

Answer 1:

对于PostgreSQL 9.1以上,使用DO INSTEAD触发上的视图。 查看触发器是更难以得到的权利,而且不太容易与多元评价等奇怪的问题,

对于PostgreSQL 9.0及以下,你应该使用的规则系统 -见CREATE RULE ... DO INSTEAD 。 一般来说,最好升级到9.1,如果你可能可以使用视图触发,特别是对于新用户。 规则是非常棘手的事情。



文章来源: How to update table when view is updated?