Re: EOF inserts PK automatically
Re: EOF inserts PK automatically
- Subject: Re: EOF inserts PK automatically
- From: "Sako!" <email@hidden>
- Date: Mon, 8 Nov 2004 13:05:13 +0100
----- Original Message -----
From: "Marek Wawrzyczny" <email@hidden>
To: "Sako!" <email@hidden>
Cc: <email@hidden>; "Chuck Hill"
<email@hidden>
Sent: Monday, November 08, 2004 1:59 AM
Subject: Re: EOF inserts PK automatically
>
> On 06/11/2004, at 23:10, Sako! wrote:
>
> >>> before i call EC.SaveChanges(). another Application has already
> >>> inserted a row in the Table with the same PK. after that WO tries to
> >>> insert row with invalid PK.
> >>> this problem is also explaind in the WO documentation unfortunately
> >>> without really good solution :(
> >>>
> >> I don't know where you got that, its wrong. The real PK is generated
> >> during save changes as part of a transaction. There is no danger of
> >> duplication. PK numbers can be skipped but never duplicated.
> >>
> > I think i miss something or something is here wrong.
> > When i don t set the PK as a ClassProperty, EOF creates its own table
> > "EO_PK_TABLE" in the database, and saves the last PK in the column
> > pk.
> > Another applications like ACCESS (what i really have as another
> > application) for example do not use this technique.
> >
> > let me give an example:
> > 1. EOF adds a row with the PK "27", and CHANGES the pk column in
> > the table EO_PK_TABLE to "27"
> > 2. ACCESS adds a row with the PK "28".
> > 3. EOF does not mention what happens to the table and pk. tries to
> > write with a PK "28" <== which is already used.
> >
> > Mr. Chuck, i know you are experienced developer here, but I am sure
> > what I am telling you and its 100% correct.
> >
> > I cant change ACCESS now. its expensive and complicated.
> > WO must be flexible with the database and ACCESS.
> > So I thought I use the database itself.
> > There is a feature in MS-SQL <IDENTITY>, what ALWAYS allows the
> > database to create the PK automatically.
> > The problem is, this works only if all applications never try to
> > write in the PK column.
> > Its possible and easy to make ACCESS stop write in the PK column. And
> > now my question: "how can i make EOF stop inserting the PK?"
> >
> > This PK conflict is even in the WO books a big problem, even Apple has
> > no good suggestion for that.
> > If you have any suggestions for me please let me know.
>
> Actually as far as I can tell, the EO_PK_TABLE is not the table that
> WebObjects uses to get the next PK. It's easy to test this. On a
> development (not your production) database, start up your application,
> create some records in a table of your choice (either through another
> application or through the database) and don't update the EO_PK_TABLE.
> EOF will still generate records with the correct PK. In fact you can
> drop the entire EO_PK_TABLE table altogether and WebObjects will still
> happily create it and keep on working.
>
> I am not sure what EOF needs EO_PK_TABLE for, but it does not seem to
> need it for the generation of PKs. I remember reading on Omnigroup that
> EOF always gets the max() value on the PK column prior to generating
> the PK. You are always guaranteed to get a unique PK for your records.
>
Wrong. Make a test.
> I think what you're asking for is how to stop WebObjects from trying to
> generate the PK and make it use the SQL auto-increment feature... and
> the answer is, you cannot.
bad for me :)
>
>
> Marek Wawrzyczny
>
> software engineer
> -------------------------->
> ish group pty ltd
> http://www.ish.com.au
> 7 Darghan St Glebe 2037 Australia
> phone +61 2 9660 1400 fax +61 2 9660 7400
>
>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden