Re: [SQL] SERIAL does not ROLLBACK

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Muhammad Shariq Muzaffar <shariq77(at)yahoo(dot)com>
Cc: <pgsql-sql(at)postgresql(dot)org>, <pgsql-novice(at)postgresql(dot)org>
Subject: Re: [SQL] SERIAL does not ROLLBACK
Date: 2003-03-12 07:34:42
Message-ID: 20030311232934.V49459-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice pgsql-sql


On Wed, 12 Mar 2003, [iso-8859-1] Muhammad Shariq Muzaffar wrote:

> hi
> i have a table named 'mytable' with a column of type
> serial. After inserting tuples in a transaction, when
> i rollback the transaction the serial number does not
> come back to its original value and next time when i
> insert the data, it start with the incremented value.
> WHY?? how can i make it to come back to its orignial
> value in case of rollback.

That's pretty much the point, so you can't easily. Serials (despite their
name) are really intended to give unique values not sequential ones.
Rolling back the value causes some issues with concurrency, and I think ou
can already pretty much implement a rollback one yourself with functions
and locks.

Specifically, if you have two concurrent transactions that want to get a
value from the serial, what happens? If the second transaction waits for
the first, you have poor concurrency. If it doesn't, then what happens
if the first gets say 1 and the second 2 and then the first rolls back?

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Jules Alberts 2003-03-12 10:07:25 filtering out doubles with SELECT
Previous Message BERG Thomas 2003-03-12 07:31:40 Re: SERIAL does not ROLLBACK

Browse pgsql-sql by date

  From Date Subject
Next Message Christoph Haller 2003-03-12 08:14:20 Re: Special characters in SQL queries
Previous Message BERG Thomas 2003-03-12 07:31:40 Re: SERIAL does not ROLLBACK