From: | Dave Cramer <Dave(at)micro-automation(dot)net> |
---|---|
To: | "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu> |
Cc: | Simon Mitchell <pgsql(at)jseb(dot)com>, Alan Roberto Romaniuc <romaniuc(at)klais(dot)com(dot)br>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: Sequence |
Date: | 2003-01-12 06:26:22 |
Message-ID: | 1042352782.2327.16.camel@inspiron.cramers |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Ross,
Damn, you're right. Still I prefer to get the id first, but ya, I
shoulda checked.
Thanks for catching that.
Dave
On Sun, 2003-01-12 at 00:07, Ross J. Reedstrom wrote:
> On Sat, Jan 11, 2003 at 08:41:31PM -0500, Dave Cramer wrote:
> > Alan, Simon,
> >
> > You can't do this, at least not safely.
> >
> > Sequences can't be rolled back and are visible across transactions. In
> > other words if thread 1 inserted a row, and before you read the sequence
> > thread b inserted a row, you would get the same value for both threads.
> > The only way I know is to get the sequence before hand and insert it.
> > The overhead is the same.
>
> Dave -
> You really should test these things before stating with such assurance
> what will happen. Yes, sequences are outside transactions, but they
> _do_ honor connections. So, if your two hypothetical threads are
> using seperate connections (which they _must_ do, BTW), each can use
> the currval(seqname) to retrieve the value used in that connection,
> regardless of what happens in the other.
>
> Ross
--
Dave Cramer <Dave(at)micro-automation(dot)net>
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cramer | 2003-01-12 06:30:57 | Re: Sequence |
Previous Message | Simon Mitchell | 2003-01-12 06:06:16 | Re: Sequence |