Re: Query inside transaction

From: Michal Táborský <michal(at)taborsky(dot)cz>
To: NMB Webmaster <webmaster(at)nmb(dot)it>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Query inside transaction
Date: 2004-06-25 10:38:50
Message-ID: 40DC00BA.8020501@taborsky.cz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

NMB Webmaster wrote:

> But if someone else runs the same transaction in the same time what
> value does "currval('sequence')" return? That one of the first
> transaction or that one of the other transaction? Moreover, field
> id is a unique primary key, it does not accept duplicates.

That's the beauty of sequences. They are transaction-safe. Co
"currval('sequence')" will always return the same value of the previous
nextval call within that transaction, no matter how many other
transactions picked the numbers in between.

To demonstrate:

Transaction 1 Transaction 2
BEGIN; --
nextval('seq') = 1 BEGIN;
do something.. nextval('seq') = 2
do something else... COMMIT;
currval('seq') = 1
COMMIT;

--
Michal Taborsky
http://www.taborsky.cz

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ago 2004-06-25 10:48:43 Re: Query inside transaction
Previous Message NMB Webmaster 2004-06-25 10:27:36 Re: Query inside transaction