我想在更新视图时更新表格。我使用postgresql/postgis。如何在更新视图时更新表格?
我创建视图。
CREATE VIEW filedata_view
AS SELECT num, id, ST_TRANSFORM(the_geom,900913)
FROM filedata
现在当它更新时,我想用这些数据更新TABLE。但我听说触发器不能在VIEW中输入。那么如何做到这一点?
现在,我使用这个功能
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)
:num
,id
和st_transform
。如何将第三列的名称设置为the_geom
?
http://www.postgresql.org/docs/9.1/static/sql-createtrigger.html表示可以在视图上设置触发器。但是AFAIK这是PG 9.1的一个新功能。 – LisMorski 2012-07-26 08:14:10
函数似乎在'WHERE'之后被切断。请更新该部分。 – 2012-07-26 08:23:27
Kliver,@LisMorski说你必须使用PostgreSQL 9.1才能在视图上使用触发器。您正在使用旧版本。升级(最好)或者如果你真的无法升级,请改用'RULE';看到我的答案中的链接。 – 2012-07-26 08:52:21