[postgis-users] AddGeometryCOlumn error on View

Piotr Synowiec psynowiec at gmail.com
Fri May 29 10:21:01 PDT 2009


Fred
thanks for help

Fred Lehodey wrote:
> you can try:
>
> 1)
> CREATE SEQUENCE my_seq START 1
>
> 2)
> CREATE VIEW my_view AS
> SELECT nextval('my_seq'), otherfield, ...
> FROM mytable1, mytable2

it worked :)


CREATE SEQUENCE final_sps_elevation_seq START 1;

CREATE OR REPLACE VIEW "final_sps_elevation" (
    id,
    geom_field,
    elevation)
AS
 SELECT nextval('final_sps_elevation_seq') AS id, geom_field, elevation
   FROM final_sps_s UNION ALL
   SELECT nextval('final_sps_elevation_seq') AS id, geom_field,elevation
   FROM final_sps_r;


But QGIS still complains :(

The view 'public.final_sps_elevation' has no column suitable for use as 
a unique key.

Qgis requires that the view has a column that can be used as a unique 
key. Such a column should be derived from a table column of type int4 
and be a primary key, have a unique constraint on it, or be a PostgreSQL 
oid column. To improve performance the column should also be indexed.

The view you selected has the following columns, none of which satisfy 
the above conditions:

'elevation' derives from 'public.final_sps_r.elevation' and is not 
suitable (type is float4 and does not have a suitable constraint)

'geom_field' derives from 'public.final_sps_r.geom_field' and is not 
suitable (type is geometry and does not have a suitable constraint)


I tried to create INDEX on VIEW but this failed.
I wonder if there is any other way to create VIEW so it can be visible 
in QGIS.
It is just academic as I'm using mainly Manifold.


Regards
Piotr






More information about the postgis-users mailing list