RE: [GENERAL] How to get seq after insert
От | Michael J Davis |
---|---|
Тема | RE: [GENERAL] How to get seq after insert |
Дата | |
Msg-id | 93C04F1F5173D211A27900105AA8FCFC1453ED@lambic.prevuenet.com обсуждение исходный текст |
Список | pgsql-general |
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. -----Original Message----- From: Herouth Maoz [SMTP:herouth@oumail.openu.ac.il] Sent: Tuesday, April 20, 1999 5:04 AM To: Michael Davis; 'Brian'; pgsql-general@postgreSQL.org Subject: RE: [GENERAL] How to get seq after insert At 00:39 +0300 on 15/04/1999, Michael Davis wrote: > The safest way is to select the nextval('seq_name') and then insert using > this value. No, actually, this is the unsafest way. This means that the logic is in the frontend, not the backend. Besides, one can define the sequence as read-only for the user who uses the database, but write for the one who created the table that uses it, so that the user can't change the sequence out of line. 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. This was on the SQL list a couple of weeks ago. And by the way, the SQL list is the proper list for this issue. Herouth -- Herouth Maoz, Internet developer. Open University of Israel - Telem project http://telem.openu.ac.il/~herutma
В списке pgsql-general по дате отправления: