cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lon Varscsak <lon.varsc...@gmail.com>
Subject Re: Order of insert/update/delete operations
Date Tue, 01 Aug 2017 23:12:03 GMT
After my email, I stumbled across that and I realized that doesn’t solve my
problem (and I probably would have had this same problem in EOF).  Because
it’s not necessarily (at least in this case) about the order of the Entity,
but the order of the operation (Ashwood seems to be doing a good job of
doing the entities in the right order).

In this case, because it’s an object with the same PK as a previously
deleted object, technically I’d need deletes to happen for this row
*first* before
doing the update.  Changing globally deletes to happen first causes FK
violations.  Updates, then Deletes, then inserts solves this problem (and
works in most cases), but then causes a problem where to get the ID for an
object (so that you can set the FK values) you need to insert a row first
(identity columns), then do the update.

Hmm, more complex than I was originally thinking.


On Tue, Aug 1, 2017 at 3:54 PM, John Huss <johnthuss@gmail.com> wrote:

> You're looking for the ashwood entity sorter
> On Tue, Aug 1, 2017 at 5:40 PM Lon Varscsak <lon.varscsak@gmail.com>
> wrote:
>
> > I think in EOF I handled this with a custom ordering of operations,
> where I
> > had a master list of entities in the order I wanted operations to perform
> > (and then reversed them for deletes).  Maybe there’s some way to do this
> > with Cayenne, but it’s not immediately evident to me where.
> >
> > -Lon
> >
> > On Tue, Aug 1, 2017 at 3:37 PM, Lon Varscsak <lon.varscsak@gmail.com>
> > wrote:
> >
> > > Hey guys, so Cayenne does db operations in insert/update/delete
> > > order…which makes sense in most cases.  But in Sybase I don’t have
> > deferred
> > > constraints (it’s not an option) and if I delete an object and then
> > > recreate it will the same primary key I end up with a database error
> > > because it tries to insert a duplicate row into the database.
> > >
> > > Originally I had changed the order of operations in my fork to
> > > update/delete/Insert which solves this problems and works in all cases
> > > (that I use) except for one.  That’s where you need to insert a row to
> > get
> > > it’s id (identity) which would then be used in an update operation for
> a
> > FK.
> > >
> > > It’s possible I’m the only one that uses Sybase, but just looking for
> > some
> > > thoughts on how I could go about solving this.  I can’t think of a
> > > straightforward case.
> > >
> > > Thanks,
> > >
> > > Lon
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message