[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 05:31:01 PDT 2012



Am 15.05.2012 14:16, schrieb F T:
> I think the QGis code should not have this specific behaviour and should
> follow the standards.

Is there a standard for this? From the db's point of view it is always 
the responsibility of the user to take care for proper primary keys. He 
can achieve this by a) using a sequence or b) using a software taking 
care of it (like QGIS) or c) error-prone manual entering.
>
> If the key doesn't contain any informations and is just a number, then
> OK we  can explicitly tell QGis to use a PostgreSQL sequence to create
> this arbitrary number.

This would be option a) or c) in the above sense, QGIS follows option b).

> In my case, the values of the key come from an other application and I
> have to type these values to link the geometrical objects to the
> database informations.

So this is a foreign key. I would recommend to use a dedicated field for 
this.

Bernhard
>
> I found a workaround : if I change the field type of the key from
> integer to bigint then everything works as attended...
> QGis doesnt tries anymore to give a value when we don't need it.
> But this is not very logical isn't it?
>
> Fabrice
>
>
> 2012/5/15 Bernhard Ströbl <bernhard.stroebl at jena.de
> <mailto:bernhard.stroebl at jena.de>>
>
>     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 <mailto:Qgis-user at lists.osgeo.org>
>         http://lists.osgeo.org/__mailman/listinfo/qgis-user
>         <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
>
>
>
>
> _______________________________________________
> 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

-- 
Bernhard Ströbl
Anwendungsbetreuer GIS

Kommunale Immobilien Jena
Am Anger 26
07743 Jena

Tel.: 03641 49- 5190
E-Mail: bernhard.stroebl at jena.de
Internet: www.kij.de



Kommunale Immobilien Jena
Eigenbetrieb der Stadt Jena
Werkleiter: Thomas Dirkes


________ 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