RE: [GENERAL] How to get seq after insert
От | Michael J Davis |
---|---|
Тема | RE: [GENERAL] How to get seq after insert |
Дата | |
Msg-id | 93C04F1F5173D211A27900105AA8FCFC1453EF@lambic.prevuenet.com обсуждение исходный текст |
Список | pgsql-general |
Cool!!! I did not know this. Thanks for verifying how this works. I will change my application to use currval instead of nextval. -----Original Message----- From: Ross J. Reedstrom [SMTP:reedstrm@rice.edu] Sent: Tuesday, April 20, 1999 10:33 AM To: pgsql-general@postgreSQL.org Subject: Re: [GENERAL] How to get seq after insert Michael J Davis wrote: > > If two users insert into the same table at the same time, one of the users > will get the wrong currval back. I still believe that getting the nextval > first is the safest way. It may create holes when an insert fails, but this > is better than getting back the wrong curval. No, as Herouth pointed out, currval is multiuser-safe: it returns the last value given in the current session, and every user get's their own session. I just tried it out in two psql sessions to a test sequence - no matter how many calls to nextval I do in one window, the currval in each gives the write answer. Ross > > -----Original Message----- > From: Herouth Maoz [SMTP:herouth@oumail.openu.ac.il]> > To make a long story short, the best way is to let the insert > statement use > the defaulet, and then use currval( 'seq_name' ). This gives you the > last > value given in the current session. It is multiuser-safe, etc. > -- Ross J. Reedstrom, Ph.D., <reedstrm@rice.edu> NSBRI Research Scientist/Programmer Computer and Information Technology Institute Rice University, 6100 S. Main St., Houston, TX 77005
В списке pgsql-general по дате отправления: