[Qgis-user] QGis 1.7.4 possible bug with PostgreSQL/Postgis manual integer primary key?

Bernhard Ströbl bernhard.stroebl at jena.de
Tue May 15 04:32:15 PDT 2012


Hi Fabrice,

I think this is the intended behaviour. If you leave it to the user to 
enter the primary key then the db might complain about non-unique keys. 
On the other hand why would you _want_ to assign a certain key? A key is 
just a technical field used to identify a dataset. It should not contain 
any information.
On my db I have three tables (point, line, polygon) that insert into the 
same table representing a n:m relation. I use a sequence on the db and a 
trigger to assign the next sequence value on INSERT. Apart from that I 
have no need to interfere with my pk values and I am glad, that QGIS 
takes care of that.

Bernhard

Am 15.05.2012 13:07, schrieb F T:
>
> Hi all,
>
> We are not able to set explicitly the value of an integer primary key field.
>
> It is possible to set this value with pgAdmin.
> But when the feature is created with QGis, it takes the next max value
> of the field and not the spécified value...
>
> To reproduce this strange behaviour :
>
> -- create a table in the schema public with an integer primary key
> CREATE TABLE the_table
> (
>    the_key integer NOT NULL,
>    the_obs character varying(150),
>    geom geometry,
>    CONSTRAINT the_table_pkey PRIMARY KEY (the_key),
>    CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2),
>    CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) =
> 'MULTILINESTRING'::text OR geom IS NULL),
>    CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 2154)
> )
> WITH (
>    OIDS=TRUE
> );
> -- spatialize the table
> INSERT INTO geometry_columns(f_table_catalog, f_table_schema,
> f_table_name, f_geometry_column, coord_dimension, srid, "type")
> VALUES('', 'public', 'the_table', 'geom', 2, 2154, 'MULTILINESTRING');
>
> Then in QGIS :
> - add this table to a project
> - create 1 line with the_key=100 and save the edition -> open the
> attribute table and you see the_key=0
> - create 1 line with the_key=102 and save the edition -> open the
> attribute table and you see the_key=1
>
> If I modify the value of the_key in pgAdmin, by example put the value
> 1000 instead of 1, then the next line created with QGis will have the
> value 1001.
>
> Any help is welcome !
> Thanks
>
> Fabrice
>
>
>
>
>
> _______________________________________________
> Qgis-user mailing list
> Qgis-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-user
>
>


________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Server.
http://www.nod32.com



More information about the Qgis-user mailing list