Re: PK problem with Postgre

From: WONDER (mmmmmmmmm5..eb.de)
Date: Fri Apr 21 2006 - 04:50:38 EDT

  • Next message: Gentry, Michael \(Contractor\): "RE: PK problem with Postgre"

    Indeed using the custom SEQ solved the problem. "At least till now".
    I belive that Cayenne does not use the seq always using the Default
    strategy.
    i.e:
    first insert Cayenne reads the seq. I see this in the log, where Cayenne
    executes the SEQ. another time Cayenne doesnot executes the SEQ.

    I think, its good idea if cayenne always uses the same strategy, and its
    very good idea to make Cayenne create the needed Sequences if they does not
    exist. I dont see any reason, why to do not create the seq automatically
    using Cayenne and default strategy.

    peaSakoe

    ----- Original Message -----
    From: "Andrus Adamchik" <andru..bjectstyle.org>
    To: <cayenne-use..ncubator.apache.org>
    Sent: Friday, April 21, 2006 8:26 AM
    Subject: Re: PK problem with Postgre

    >
    > On Apr 21, 2006, at 4:42 AM, lsteel..inet.net.au wrote:
    > >
    > > When I was looking at the SQL statements Cayenne was using, it was
    > > constantly
    > > trying to include the id - thus causing problems with Postgres's
    > > autoincrement.
    > >
    > > They seemed to think that Cayenne should just insert the record
    > > and let
    > > postgres worry about doing the autoincrement.
    >
    > This thread seems to be about two separate things - (1)
    > autoincremented column values and (2) sequences used by Cayenne to
    > generate PK. These are two different strategies (as mentioned in one
    > of the messages that you quoted). Cayenne most certainly works with
    > the second scenario (I am constantly using postgres myself)...
    >
    > > In postgres, if you want autoincrement you set the sequences up
    > > and then you
    > > just insert a record without trying to predict what the next id
    > > will be.
    > > Postgres should look after this.
    >
    > Regarding the first scenario - can you elaborate how you setup your
    > tables? One way that I know is this:
    >
    > create sequence foo_bar_seq;
    > create table foo (bar integer unique not null default nextval
    > ('foo_bar_seq'));
    >
    > (Or is this something else?) The example above does not work with
    > Cayenne because Postgres driver as of 8.0 does not implement
    > Statement.getGeneratedKeys() thus making it impossible (ok, rather
    > very hard) for Cayenne to retrieve the key generated in such way. The
    > solution - do not tie a PK column to a sequence in Postgres, let
    > Cayenne generate the key.
    >
    > I guess we may implement an equivalent of 'Statement.getGeneratedKeys
    > ()' on Cayenne end by using Postgres proprietary API to retrieve
    > generated keys (and thus enable scenario (1)), still I hoped the
    > driver would provide that.
    >
    > Andrus
    >
    >
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Fri Apr 21 2006 - 04:50:29 EDT