Yes, I know about this. What I plan is to remove the auto_increment. I will
do this by hand locking the entire table just right before inserting the
field. Actually, it is running like this. I am just upgrading the PHP.

I will keep the auto_increment in other tables that does not have this kind
of problem.

Thanks a lot for your help.

Andre

On 1/17/05 9:53 PM, "Paul DuBois" <[EMAIL PROTECTED]> wrote:

> At 21:27 -0500 1/17/05, Andre Matos wrote:
>> Thanks Eric, but I can let it increment because I cannot have a gave in the
>> numbers. I think I will need to use MAX() in this case.
> 
> Using MAX() won't guarantee that you won't have gaps.
> 
> What you're describing cannot be achieved in the general case.
> Consider this scenario:
> 
> - Transaction T1 begins, generates an AUTO_INCREMENT value n.
> - Transaction T2 begins, generates an AUTO_INCREMENT value n+1.
> - Transaction T2 commits.
> - Transaction T1 rolls back.
> 
> You now have a gap at value n, and a used value of n+1.
> MAX() at this point returns n+1, not n, so that won't
> help you reuse n.
> 
> With more than two transactions running simultaneously, each
> of which can roll back or commit, the situation becomes more
> complex.
> 
> Might be worth reconsidering whether you really require no
> gaps.  It's generally better to try to design an application
> not to have that dependency.
> 
>> 
>> Thanks.
>> 
>> Andre
>> 
>> 
>> 
>> On 1/17/05 8:14 PM, "Eric Bergen" <[EMAIL PROTECTED]> wrote:
>> 
>>>  Just let it increment. Keeping it incremented is MySQL's way ot
>>>  insuring that the same id doesn't get used twice for different
>>>  records. It's doing everything correctly.
>>> 
>>>  -Eric
>>> 
>>>  On Mon, 17 Jan 2005 19:06:45 -0500, Andre Matos
>>>  <[EMAIL PROTECTED]> wrote:
>>>>  Hi List,
>>>> 
>>>>  I have a field in one of my tables that uses auto-increment from MySQL
>>>>  4.1.8-nt (Windows XP).
>>>> 
>>>>  My problem is to get the last insert ID when the insert fails and I use
>>>>  rollback. The MySQL is still incrementing the field. How can I
>>>> avoid this if
>>>>  it is possible? I am trying to avoid to use the function MAX() to get the
>>>>  last ID inserted.
>>>> 
>>>>  Thanks for any help.
>>>> 
>>>> Andre
> 

-- 
Andre Matos
[EMAIL PROTECTED]



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to