Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

correlativo del id

Estas en el tema de correlativo del id en el foro de SQL Server en Foros del Web. Hola Comunidad !! bueno tengo el siguiente problema tengo una tabla xxxxx con un campo que es un ID que obviamente es la clave principal ...
  #1 (permalink)  
Antiguo 05/06/2008, 13:10
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 4 meses
Puntos: 2
correlativo del id

Hola Comunidad !!

bueno tengo el siguiente problema


tengo una tabla xxxxx
con un campo que es un ID que obviamente es la clave principal y se autoincrementa sola.

ahora bien cada vez que ingreso un registro el id se va incrementando 1.2.3.4 , etc


el problema q tengo es cuando se borra un registro por ejemplo el 6 y al ingresar otro registro me empieza en el 7

como lo hago para que el id sea correlativo aunque se borren registros??


desde ya muchas gracias :D
  #2 (permalink)  
Antiguo 05/06/2008, 14:51
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: correlativo del id

Ola Bnas tardes... tenia hace muchos años atras la misma duda, pero porque se llama un Campo "correlativo" o "autonumerico", porque nos deuelve una unica clave para diferente tabla, claro que hay un unas lineas de codigo que hacen ese trabajito... pero imaginate que el correlativo este por el "105" y por casualidad borraste el "100" el correlativo se quedo en el valor = 106, cierto, si aplicas tal codigo, tu correlativo sera ahora = 100, pues el 100 fue el que borraste, entonces cuando quieras ingresar el siguiente, tu correlativo se quedo con el valor = 101, y plash!!! ERROR ya existe el 101. entonces a parte de querer aprovechar cada valor del Campo autonumerico, se tiene que hacer una validacion para el suiente registro que se desea ingresar.

De igual manera te dejo el codigo que te reseta el Autonuemrico a cualquier valor que desees, de como lo sepas utilizar ya es trabajo tuyo...

Código:
     Declare @ValorReset as decimal(19,6)
     set @ValorReset = 100
     DBCC CHECKIDENT ('TABLA.CampoAutonumerico', RESEED, @ValorReset)
     GO
  #3 (permalink)  
Antiguo 05/06/2008, 17:06
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: correlativo del id

Las columnas de tipo IDENTITY, NO SIRVEN EN LOS BORRADOS, ni insercciones invalidas.

Saludos.
  #4 (permalink)  
Antiguo 06/06/2008, 09:40
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: correlativo del id

Hola Pablokes, para hacer lo que deseas tendrías q hacer esto:

1.- Verificar si existen códigos sin utilizar entre tu mínimo código hasta el máximo.
2.- Escoger el menor de está lista.
3.- Desactivar el identity
4.- Realizar tu insert
5.- Activar el identity

Pero esto no es lo indicado, lo mejor sería que manejes un campo aparte que sea tu "CORRELATIVO" y el campo idenitty tu "ID".

Saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #5 (permalink)  
Antiguo 06/06/2008, 14:42
rdm
 
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires, Argentina
Mensajes: 57
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: correlativo del id

Hola, aporto un comentario mas a este tema. Hay que tener especial cuidado con este tipo de campos autonuméricos si es que tu sistema va ha trabajar en multiusuario, yo he tenido que lidiar con este problema y la resolución fué sencilla pero efectiva: me olvidé de la correlatividad del ID, si se borró un registro, no vuelvo a usar su id. Ahora bien, estos campos en sql no funcionan como los de access, tienen ciertas falencias que impiden usarlos como generadores de clave única de registro. Lo que yo hice fué crear una tabla que administrara la numeración de las demas tablas, entonces cuando necesito un número de id, voy a esa tabla, ubico el registro que guarda la numeración a dicha tabla, lo incremento en uno y uso el número generado. De esta manera, también resuelves el problema de la concurrencia de varios usuarios, es decir, solo un usuario por vez tendrá acceso a la tabla de administración de claves, ingresa, genera un nuevo id, lo deja grabado en la tabla de claves, lo usa y listo, el próximo acceso funcionará igual y nunca se te presentará el problema que plantea rommel_

Espero te sirvan estos comentarios.
  #6 (permalink)  
Antiguo 06/06/2008, 15:12
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: correlativo del id

Ademas tiene una ventaja no utilizar un Campo autonumerico, en las auditorias puedes hacerle las jugada... y evitar algunas de los registros que Tu no quieras mostrar jaja... de lo contrario el auditor, facilmente sabra que has jugado chueco... jeje...

y por otro lado tambien es bueno utilizar los campos Autonumericos, agiliza de una manera sorprendente tu consulta.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.