SQL - Id int autogenerados

   
Vista:

Id int autogenerados

Publicado por Christian (4 intervenciones) el 10/09/2008 19:11:46
Hola compañeros,

Resumen: Hay alhuna manera de resetear el IDENTITY(Id autgenerado) de tal manera que los ID que fueron eliminados sean nuevamente ocupados para evitar que a futuro se me vayan acabando el tamaño de registros que puedo tener en total en la base de datos.

Tengo una gran preocupación y quisiera que me saquen de una duda. Estoy trabajando con SQL 2005. En la mayoría de mis tablas tengo campos autogenerados. Igreso por ejemplo 10 registros y elimino el 6to, luego ya nunca mas puedo utilizar el número 6 como ID y la proxima vez que ingresaría un registro me ingresaría con el 11 en vez del 6 que segun yo como ya lo elimine estaría disponible. INT tiene la posibilidad de tener 2.147.483.647 y por ejemplo si yo tendría 2.147.483.627 registros ya ingresados en la base, me quedarían 20 registros disponibles, tomando en cuenta que antes había eliminado 10000 registros o mas como haría para resetear el IDENTITY o algo para ocupar los ID que estan disponibles.

De antemano muchas gracias.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Id int autogenerados

Publicado por pacopaz (143 intervenciones) el 10/09/2008 20:35:06
Aunque hay forma de cambiar el 'seed' (inicio del autonumérico) para tratar de resolver este problema, en realidad no es una práctica recomendable. El incremento se mantendrá, así que será complicado estar controlandolo cada vez que se hace un nuevo insert a la tabla.
Otra opción, quizás más manejable, es la de insertar un registro con un número específico, mismo que deberá de venir de alguna búsqueda por huecos en el consecutivo.
Para información de ambos casos, refiérete a estas páginas:
dbcc checkident:
http://msdn.microsoft.com/en-us/library/aa258817(SQL.80).aspx
set identity_insert:
http://msdn.microsoft.com/en-us/library/aa259221(SQL.80).aspx

En lo particular dejé de usar campos identity desde hace un buen rato, en parte por esta situación (aunque normalmente nunca borro un registro), en parte por la visualización (si pasas un id como parámetro en una página web, el usuario podría intentar probar suerte con otro número), en parte por que refiero las secuencias controladas de forma externa y al final, por que considero más segura la utilización del tipo UniqueIdentifier y la función newid().

Como sea, espero que te sirvan las referencias.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Id int autogenerados

Publicado por Christian (4 intervenciones) el 11/09/2008 18:43:05
Muchas gracias por tu respuesta:

Se me ocurrio hacerlo de la segunda forma que tu dices, de ley me toca hacer una funcion en mi aplicación web para hacer la busqueda por huecos o el segundo link que me das tiene ya la función por default en el motor de base de datos?

Att. Christian.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar