SQL Server - Error al autoincrementar valor de una columna

 
Vista:

Error al autoincrementar valor de una columna

Publicado por Fesioche (5 intervenciones) el 23/12/2009 13:22:35
Muy buenas!

Os explico mi problema:
Antes de nada decir que utilizo
Microsoft SQL Server Management Studio Express 9.00.2047.00

Creo una tabla con dos columnas, configuro una columna, llamémosla "autoincremeto", de la siguiente forma:

Tipo de datos: int
Especificación de identidad: Sí
Incremento de identidad: 1
Inicialización de identidad:1

1º)Empiezo a introducir datos y el autoincremento funciona perfectamente
2º)Borro cualquier dato
3º)Introduzco nuevamente datos y el autoincremento continúa desde el dato siguiente, me explico

Ejemplo:
1º) Introduzco 3 nombres
Nombre Autoincremento

Pepe 1
Luis 2
Juan 3

2º) Borro "Luis"

Nombre Autoincremento

Pepe 1
Juan 3

3º) Introduzco "Arturo"

Nombre Autoincremento

Pepe 1
Juan 3
Arturo 4 //Aquí está mi duda!!!

Lo que yo realmente quiero hacer es que Arturo sea el nº 2

Agradecería muchísimo vuestra ayuda
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
Imágen de perfil de roger

RE:Error al autoincrementar valor de una columna

Publicado por roger (173 intervenciones) el 23/12/2009 14:11:28
lo que deseas hacer nunca se logrará con la funcion de identity de sql server, ya que la misma no se encarga de tapar huecos entre registros, ni tampoco genera estrictamente numeros consecutivos, es decir, por ejemplo si un insert falla y se iba a ingresar el id 5, sql consumira dicho numero, y el proximo será 6, y quedaran en la tabla los id: 1,2,3,4,6. Si lo quieres hacer como dices, pues toca hacer un proceso mas complejo en donde evalues los registros faltantes, pero sql server por defecto, no te lo administra de esa manera.
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:Error al autoincrementar valor de una columna

Publicado por Fesioche (5 intervenciones) el 23/12/2009 18:21:19
Gracias Roger, investigaré sobre el asunto, y cuando consiga una solución la publicaré aquí, mientras tanto si alguien sabe dicha solución y es tan amable de compartirla, en concreto a mí me vendría muy bien ;)

Salu2
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Error al autoincrementar valor de una columna

Publicado por Isaias (4557 intervenciones) el 23/12/2009 19:14:47
Como bien dice ROGER, nunca vas a lograr el objetivo con campos IDENTITY, ya que estos, al recibir un INSERT fallido o bien un DELETE, NO reorganizacion los numeros o tapan los huecos.

Para hacerlo, deberas utilizar la funcion MAX(Tucolumna) + 1, cuidando, las transacciones multiples. (Insolation level)
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Error al autoincrementar valor de una columna

Publicado por Isaias (4557 intervenciones) el 23/12/2009 19:16:13
ADEMDUM:

Si hay borrados intermedios 1,2,3,4,5,6,7,8 y borro el 4, dicha funcion de MAX(Tucolumna) + 1, no funcioaria, deberias crear una especie de formula que te localizar el "espacio no ocupado" y tomarlo.
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:Error al autoincrementar valor de una columna

Publicado por alejandro  (17 intervenciones) el 23/12/2009 21:55:09
mira con una herramienta de sql server
ssis q es un etl
hay un componente que es para ordenar indices
lo hace automaticamente
y puedes invocar desde un procedimiento almacenado
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