saf@stripped (saf) wrote on 03/23/2006 10:50:10 AM:
> I have a question about autoincremend id:
> If I have an autoincrement id set on my first column field of my
> table and I have the
> following entries:
> And then I make a INSERT INTO foobar VALUES(''); , the next field
> would be automatically 4:
> Is there a possibility to take a free ID to not use too high IDs for
> I would like to take the ID 2 and not 4, because ID 2 is free.
> My problem is that my system which uses the ID numbers in
> applications which uses them
> as signed int or unsigned int,
> so I will soon have a problem, because I insert (and delete some
> times) many entries in my SQL database,
> but not more than the highest value of an signed integer.
> Best regards,
The short answer is "no". The Record #2 already existed. It's current
status is "deleted". If you had other tables that linked their data to
record #2 and you created a new #2 to replace the one you already deleted
then you could possibly be making a "bad" match between the old data and
the new data.
For the sake of data consistency and for all of the other good reasons to
have a relational database, once an auto_increment value has been issued
it's considered used and no other record should ever have that number.
Only if you completely reset your table (see the command "TRUNCATE TABLE")
could it be possibly safe to begin re-issuing the smaller numbers. Again,
it's only possible if all of the child records that used to point to the
old data were also deleted.
Do not rely on the auto_increment value for record sequencing. If you need
your records serialized in some sequential way, you will need to code the
support for those sequential numbers in your application.
Unimin Corporation - Spruce Pine