Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Identity en SQL

Hola amigos del club.
Tengo muchas tablas, muchas de ellas para el indice hago un campo automatico de tipo Longint y le digo que sea el Primary Key y que sea Indentity con incremento de 1 en 1.
Por supuesto todo funciona a la perfecccion.
Me he dado cuenta que al crear registros por supuesto ese campo se incrementa de 1 en 1. Cuando borro registros, en vez de ocupar esos valores borrados, sigue en su consecutivo...
Pero tengo unas dudas ya que soy una persona que me gusta precaver todas las cosas en mis aplicaciones.

- Se que llenar un longint de 1 en 1 es bastante dificil, pero...si ese valor lleguara al maximo de un Longint, que pasaria en mi tabla? Empezaría de 1 de nuevo llenando los que no esten ocupados o daria error??
- Hay alguna forma de ordenarle al SQL que empiece ese valor nuevamente de 1??
Me preocupa porque uso ese campo a la hora de ordenar registros y si esas cosas pasan se puede liar un poco mi aplicacion.
Gracias por la atencion.
Responder Con Cita
  #2  
Antiguo 19-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Hola

Con que motor de base de datos estas trabajando ???

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 19-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Perdona por olvidar poner el motor (imperdonable)
De momento uso el SQLExpress 2005. Pero con perspectivas de SqlServer 2005.
Gracias por el interes.
Responder Con Cita
  #4  
Antiguo 19-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por paladincubano Ver Mensaje
indice hago un campo automatico de tipo Longint y le digo que sea el Primary Key y que sea Indentity con incremento de 1 en 1.
Estas seguro que de tipo Longint... es que estoy revisando la documentación del SQL Server 2005 y no me aparece ese tipo de dato...y revise en el Server 2000 y tampoco lo tengo

Salu2
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 19-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Jajajaa, estas para fastidiarme, de nuevo perdonnnnnnnnnnnn, lo he confundido con el tipo en delphi. En SQL es el BigInt. OK???????????
Algo mas????
saludos.
Responder Con Cita
  #6  
Antiguo 19-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Veamos el uso de DBCC CHECKIDENT en SQL Server:

use AdventureWorks
DBCC CHECKIDENT ('Production.Product')

Al ejecutar esta instrucción devuelve un resultado informando lo siguiente:

Checking identity information: current identity value '999', current column value '999'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Ahora veamos la funcionalidad de regeneración del DBCC CHECKIDENT:

use AdventureWorks
-- Verifica los valores de la columna Identity
-- de la tabla
DBCC CHECKIDENT ('Production.Product', NORESEED)

-- Asigna el próximo valor de Identity si el valor]
-- del último registro es menor al siguiente valor
-- de la semilla.
DBCC CHECKIDENT ('Production.Product', RESEED)

-- Asigna el valor que de la semilla al valor
-- que se desea. En este ejemplo, se reinicia el valor
-- de la columna a 1.
DBCC CHECKIDENT ('Production.Product', RESEED, 1)
Revisa la publicación completa en el sgte hilo.. gentileza de san google

Salu2
__________________
BlueSteel
Responder Con Cita
  #7  
Antiguo 19-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por paladincubano Ver Mensaje
Jajajaa, estas para fastidiarme, de nuevo perdonnnnnnnnnnnn, lo he confundido con el tipo en delphi. En SQL es el BigInt. OK???????????
Algo mas????
saludos.

Hola.. en todo caso... crees que podras llenar todos los registros en el tipo BigInt...has visto hasta cuanto soporta....

Cita:
Tipo de datos Intervalo Almacenamiento
bigint De -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807) 8 bytes
Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 19-05-2008 a las 18:57:02.
Responder Con Cita
  #8  
Antiguo 19-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Vale tu ganas man.
Ahora una ultima cosa. Si me gustaria poder reoordenarlos, o sea, tengo

1
2
6
10
11
14
15
19

Hay alguna forma de reoordenarlos para que cojan bien los consecutivos. Osea, algun comando?
Ya es lo ultimo te lo prometo.
gracias por todo.
Responder Con Cita
  #9  
Antiguo 19-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por paladincubano Ver Mensaje
Vale tu ganas man.
Ahora una ultima cosa. Si me gustaria poder reoordenarlos, o sea, tengo

1
2
6
10
11
14
15
19

Hay alguna forma de reoordenarlos para que cojan bien los consecutivos. Osea, algun comando?
Ya es lo ultimo te lo prometo.
gracias por todo.
En realidad no se si exista algun comando.... creo que deberias buscar el no consecutivo lo hayas.. y se lo reasignas....

o simplemente trabajar con otra tabla...trapasar todos los datos a otra tabla, resetear el campo identidad.. y volver a traspasarlos, así se conservarán la continuidad y sin saltos.. bueno.. esto hasta que se te ocurran borrar nuevamente otros registros...

Salu2
__________________
BlueSteel
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:45:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi