我想在更新視圖時更新表格。我使用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