Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-general by date

Next:From: AgoDate: 2004-06-25 10:48:43
Subject: Re: Query inside transaction
Previous:From: NMB WebmasterDate: 2004-06-25 10:27:36
Subject: Re: Query inside transaction

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group