SQL Server - Saber que # continúa en una columna autonumérica

 
Vista:

Saber que # continúa en una columna autonumérica

Publicado por anonimo (4 intervenciones) el 02/06/2009 18:17:35
Buenos Días.

Tengo un problema al guardar una información en una tabla, ya que la PK de esta es autonumérica y si se borra un registro este numero no continua con el siguiente de la tabla, sino con el del registro que el tiene.
Es decir si tengo tres filas 1,2,3 y borro la 3 al escribir otra fila esta queda es con 4 es decir 1,2,4, hay forma de consultar la variable donde se almacena este numero para así poder saber que el que sigue es 4 y no creer que sigue es el 3.

Estoy Trabajando con

Microsoft SQL Server Management Studio 9.00.2047.00
Microsoft Analysis Services Client Tools 2005.090.2047.00
Microsoft Data Access Components (MDAC) 2000.085.1132.00 (xpsp.080413-0852)
Microsoft MSXML 2.6 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 7.0.5730.13
Microsoft .NET Framework 2.0.50727.42
Operating System 5.1.2600

Y

Microsoft Visual Studio 2005
Versión 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Versión 2.0.50727

Edición instalada: Enterprise

Microsoft Visual Basic 2005 77930-113-3000004-41725
Microsoft Visual Basic 2005

Gracias de antemano por la 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 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:Saber que # continúa en una columna autonuméric

Publicado por Isaias (4558 intervenciones) el 02/06/2009 18:49:24
Las columnas de tipo NUMERICAS con propiedad IDENTITY, no son recomendadas para tablas que sufriran DELETE, ya que NO se renumeran los registros borrados, ni las insercciones fallidas.

Has probado DELETE, pero si intentas con un INSERT y este falla, tu ultimo numero de tu columna, sera el ultimo registro que se intento insertar.

Debes utilizar un metodo de numeracion manual

SELECT MAX(CAMPO) + 1 FROM tutabla
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:Saber que # continúa en una columna autonuméric

Publicado por anonimo  (4 intervenciones) el 02/06/2009 19:02:50
Buenos Días,

Es que ahí es donde ocurre el problema al recuperar la información la variable del programa queda con el numero 3 por realizar esta consulta, SELECT MAX(CAMPO) + 1 FROM tutabla, cuando en la tabla se graba es un 4.

¿Hay forma de consultar en los registros del SQL que numero seguirá, pero sin uno sumarle nada? O definitivamente elimino el campo autonumérico.

Muchas gracias por la ayuda.
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:Saber que # continúa en una columna autonuméric

Publicado por Isaias (4558 intervenciones) el 03/06/2009 03:17:12
Insisto

Los tipos IDENTITY, no sirven para tablas cuyos registros pueden ser borrados.

Imaginate que vas en el 1000 y por cualquier razon, borras del 300 al 310, ¿como vas a RENUMERAR todos tus registros, IMPOSIBLE !!!

Debes buscar otra alternativa y la mas viable es MAX(COLUMNA) + 1
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:Saber que # continúa en una columna autonuméric

Publicado por Jorge C (1 intervención) el 05/02/2010 22:17:52
ya lleva un poco de tiempo al pregunta pero creo que lo ke andas buscando es la funcion
SCOPE_IDENTITY(): Devuelve el último valor de identidad insertado en una columna de identidad en el mismo ámbito. Un ámbito es un módulo: un procedimiento almacenado, desencadenador, función o lote. Por tanto, dos instrucciones están en el mismo ámbito si se encuentran en el mismo procedimiento almacenado, función o lote.

Con esta funciona, puedes saber cual fue ultimo valor insertado y le sumas 1 y ya puedes saber con mas certeza cual es el valor que se generará.

espero te sea de utilidad.

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