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 <[email protected]
<mailto:[email protected]>>

    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
        [email protected] <mailto:[email protected]>
        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
[email protected]
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: [email protected]
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
_______________________________________________
Qgis-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to