Subject Re: [firebird-support] Generator Question
Author Helen Borrie
At 07:26 AM 1/12/2011, Kevin Stanton wrote:
>I have a customer that reports from time to time that my application is
>issuing the same Order Number. The order number's source is a generator.
>
>My application (using a very old version of IBO):
>
>1) Creates a Transaction object in code. (default AutoCommit is False)
>
>2) Creates a cursor object in code and assigns the above transaction.
>
>3) The cursor component calls a stored procedure which calls gen_id:
>
>EndOrderNo = gen_id(gen_orderno, :InOrderCount);

IMO, this is crazy. You'll get a dup generator if the InOrderCount variable is ever 0 and an *end-user" will decrement the generator (for everyone!) if it is ever negative.

>4) The Transaction component's "Commit" method never gets called. This
>is probably my error however I thought generator calls/increments are
>outside of the transaction.

Yes, they are. But if you send a call that will stuff up the generator then the generator will get stuffed up. ;-)

>Can someone confirm the errors of my ways? Thanks in advance!

What's the point of passing the step value as a variable, anyway?

./heLen