On Thursday 15 June 2006 6:38 pm, Daniel Noll wrote:
> Michael Segel wrote:
> > Uhm,
> >
> > I'm sorry, but where did I ever say 'select max()'?
> > Hint: I didn't because its not that efficient.
>
> Presumably he column would be indexed if you're doing operations like
> max() on it anyway, so efficiency isn't the problem.  I suspect the
> problem would be what to do when two users tried to insert rows at
> around the same time.  The second would fail to commit the transaction
> and have to try again.
>
> Daniel
No.
First, you're still returning a value from the sequence that will cause an 
exception.  So  you have overhead. Also you'd have a lot harder time trying 
to manage the inserts. Also, you have to consider that its cheaper to get a 
value from memory than it is to apply the max() function on a value from the 
index.

Again the easiest way is to update the sequence when you have a successful 
insert where there is a value in the identity column greater than the current 
base value. Everything is in memory and of course you'll have to deal with a 
mutex lock on the sequence while you're doing the update.  

again pretty trivial or rather straight forward....

Reply via email to