Kli*_*Max 2 postgresql postgis
我想在她的视图更新时更新表.我使用postgresql/postgis.
我创建视图.
CREATE VIEW filedata_view
AS SELECT num, id, ST_TRANSFORM(the_geom,900913)
FROM filedata
Run Code Online (Sandbox Code Playgroud)
现在当它更新时我想用这些数据更新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;
Run Code Online (Sandbox Code Playgroud)
没关系.但另一个问题.如何添加触发器来查看我这样做
CREATE TRIGGER up_table AFTER UPDATE ON filedata_view
FOR EACH ROW EXECUTE PROCEDURE update_table ();
Run Code Online (Sandbox Code Playgroud)
但得到错误
ERROR: "filedata_view" is not a table.
Run Code Online (Sandbox Code Playgroud)
UPDATE
AS SELECT num, id, ST_TRANSFORM(the_geom,900913)如果我使用这个我得到列:如何设置列名称num,id和st_transform.如何设置第三列的名称the_geom?
对于PostgreSQL 9.1及更高版本,请在视图上使用DO INSTEAD触发器.查看触发器的难度要小得多,并且不太容易出现多次评估等奇怪的问题.
对于PostgreSQL 9.0及更低版本,您应该使用规则系统 - 请参阅CREATE RULE ... DO INSTEAD.通常最好更新到9.1并尽可能使用视图触发器,尤其是对于新用户.规则是棘手的事情.
| 归档时间: |
|
| 查看次数: |
2776 次 |
| 最近记录: |