Of course, another reason to use a trigger is so that PKs are correctly generated _regardless_ of the application that's doing the inserting.
--- Rachel Carmichael <[EMAIL PROTECTED]> wrote: > It was a compromise... since they had already written their code, I > put > in the triggers so that it was transparent to them that the "key" > they > were generating was not being used. > > I had to give them something, since I was really trying hard NOT to > say > "I told you so!" > > > --- Yong Huang <[EMAIL PROTECTED]> wrote: > > Rachel, > > > > That's a good case to remember. Java programmers (or architects) > > sometimes miss > > those little things. > > > > I would ask why you used triggers to populate the PK field instead > of > > saying > > INSERT ... MYSEQUENCE.NEXT_VAL in the code, or even INSERT ... > SELECT > > ROWNUM > > (or ROWNUM+somefixedvalue). Wouldn't these perform better? > > > > Yong Huang > > > > --- Rachel Carmichael <[EMAIL PROTECTED]> wrote: > > > At one site I worked at, the programmers insisted on using Java > > > milliseconds as the primary key -- so that they wouldn't have to > > hit > > > the database twice (once to get the sequence number, once to > insert > > the > > > row). They swore up, down and six ways from Sunday that there > could > > > never, ever, EVER be a collision. > > > > > > After we had collisions in development, we switched to sequences > > (one > > > per table), with a trigger to populate the field on insert so > that > > they > > > wouldn't have to make the second round-trip. > > > > > > > > > --- Jonathan Gennick <[EMAIL PROTECTED]> wrote: > > > > The recent article that mentioned sequences got me to > > > > thinking. I might pitch a more detailed article on sequences > > > > to Builder.com. But a more interesting article might be one > > > > that explored various ways to automatically generate primary > > > > keys. So, in the name of research, let me throw out the > > > > following questions: > > > > > > > > What mechanisms have you used to generate primary keys? > > > > Which ones worked well, and why? Which mechanisms worked > > > > poorly? > > > > > > > > I've run up against the following approaches: > > > > > > > > * Hit a table that keeps a counter. This is the "roll your > > > > own sequence method". The one time I recall encountering > > > > this approach, I helped convert it over to using stored > > > > sequences. This was because of concurrency problems: with > > > > careful timing, two users could end up with the same ID > > > > number for different records. Is there ever a case when this > > > > roll-your-own approach makes sense, and is workable? > > > > > > > > * Stored sequences. I worked on one app that used a separate > > > > sequence for each automatically generated primary key. I > > > > worked on another app, a smaller one, that used the same > > > > sequence for more than one table. The only issue that I > > > > recall is that sometimes numbers would be skipped. But end > > > > users really didn't care, or even notice. > > > > > > > > * The SYS_GUID approach. I've never used SYS_GUID as a > > > > primary key generator. I wonder, was that Oracle's > > > > motivation for creating the function? Has anyone used it for > > > > primary keys in a production app? What's the real reason > > > > Oracle created this function? > > > > > > > > * Similar to SYS_GUID, I once worked on an obituary-tracking > > > > application that built up a primary key from, as best I can > > > > recall now: date of death, part of surname, part of first > > > > name, and a sequence number used only to resolve collisions, > > > > of which there were few. The approached worked well, > > > > actually, because whatever fields we munged together to > > > > generate a primary key gave us a unique key the vast > > > > majority of the time. > > > > > > > > The SYS_GUID approach is interesting, but if you need an ID > > > > number that users will see, and that users might type in > > > > themselves (e.g. social security number), is SYS_GUID really > > > > all that viable? > > > > > > > > Best regards, > > > > > > > > Jonathan Gennick --- Brighten the corner where you are > > > > http://Gennick.com * 906.387.1698 * mailto:[EMAIL PROTECTED] > > > > > > > > Join the Oracle-article list and receive one > > > > article on Oracle technologies per month by > > > > email. To join, visit > > > > http://four.pairlist.net/mailman/listinfo/oracle-article, > > > > or send email to [EMAIL PROTECTED] and > > > > include the word "subscribe" in either the subject or body. > > > > > > > > -- > > > > Please see the official ORACLE-L FAQ: http://www.orafaq.net > > > > -- > > > > Author: Jonathan Gennick > > > > INET: [EMAIL PROTECTED] > > > > > > > > Fat City Network Services -- 858-538-5051 > > http://www.fatcity.com > > > > San Diego, California -- Mailing list and web hosting > > services > > > > > > > --------------------------------------------------------------------- > > > > To REMOVE yourself from this mailing list, send an E-Mail > message > > > > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') > and > > in > > > > the message BODY, include a line containing: UNSUB ORACLE-L > > > > (or the name of mailing list you want to be removed from). You > > may > > > > also send the HELP command for other information (like > > subscribing). > > > > > > > > > __________________________________ > > > Do you Yahoo!? > > > Protect your identity with Yahoo! Mail AddressGuard > > > http://antispam.yahoo.com/whatsnewfree > > > -- > > > Please see the official ORACLE-L FAQ: http://www.orafaq.net > > > -- > > > Author: Rachel Carmichael > > > INET: [EMAIL PROTECTED] > > > > > > Fat City Network Services -- 858-538-5051 > http://www.fatcity.com > > > San Diego, California -- Mailing list and web hosting > > services > > > > > > --------------------------------------------------------------------- > > > To REMOVE yourself from this mailing list, send an E-Mail message > > > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and > in > > > the message BODY, include a line containing: UNSUB ORACLE-L > > > (or the name of mailing list you want to be removed from). You > may > > > also send the HELP command for other information (like > > subscribing). > > > > > > __________________________________ > > Do you Yahoo!? > > Protect your identity with Yahoo! Mail AddressGuard > > http://antispam.yahoo.com/whatsnewfree > > -- > > Please see the official ORACLE-L FAQ: http://www.orafaq.net > > -- > > Author: Yong Huang > > INET: [EMAIL PROTECTED] > > > > Fat City Network Services -- 858-538-5051 http://www.fatcity.com > > San Diego, California -- Mailing list and web hosting > services > > > --------------------------------------------------------------------- > > To REMOVE yourself from this mailing list, send an E-Mail message > > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in > > the message BODY, include a line containing: UNSUB ORACLE-L > > (or the name of mailing list you want to be removed from). You may > > also send the HELP command for other information (like > subscribing). > > > __________________________________ > Do you Yahoo!? > Protect your identity with Yahoo! Mail AddressGuard > http://antispam.yahoo.com/whatsnewfree > -- > Please see the official ORACLE-L FAQ: http://www.orafaq.net > -- > Author: Rachel Carmichael > INET: [EMAIL PROTECTED] > > Fat City Network Services -- 858-538-5051 http://www.fatcity.com > San Diego, California -- Mailing list and web hosting services > --------------------------------------------------------------------- > To REMOVE yourself from this mailing list, send an E-Mail message > to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in > the message BODY, include a line containing: UNSUB ORACLE-L > (or the name of mailing list you want to be removed from). You may > also send the HELP command for other information (like subscribing). === message truncated === ===== Paul Baumgartel Transcentive, Inc. www.transcentive.com __________________________________ Do you Yahoo!? Protect your identity with Yahoo! Mail AddressGuard http://antispam.yahoo.com/whatsnewfree -- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: Paul Baumgartel INET: [EMAIL PROTECTED] Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting services --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).