Si borro registros de una tabla y tiene una columna IDENTITY

02/11/2004 - 18:32 por Ayuda para particionar una Tabla... | Informe spam
Hola Grupo sqlserver: Ojalá alguien ya haya solucionado un problema asi,
muchas gracias por su colaboración.
Tengo una tabla con una columna identity, si yo elimino unos registros y
requiero despues insertar, el número asignado al identity continua a partir
del último valor.
Como puedo hacerle para que al insertar un registro si ya elimine datos
inicie a partir del número que quedo en la tabla.
Muchas gracias.
Saludos
Gabriela Betzabé

Preguntas similare

Leer las respuestas

#1 Tonijua
02/11/2004 - 18:45 | Informe spam
Debes ejecutar el comando

DBCC CHECKIDENT ("Tabla", RESEED, 0)

Puede ser como StoredProc

By

"Ayuda para particionar una Tabla..."
escribió en el
mensaje news:
Hola Grupo sqlserver: Ojalá alguien ya haya solucionado un problema asi,
muchas gracias por su colaboración.
Tengo una tabla con una columna identity, si yo elimino unos registros


y
requiero despues insertar, el número asignado al identity continua a


partir
del último valor.
Como puedo hacerle para que al insertar un registro si ya elimine


datos
inicie a partir del número que quedo en la tabla.
Muchas gracias.
Saludos
Gabriela Betzabé
Respuesta Responder a este mensaje
#2 Maxi
02/11/2004 - 18:50 | Informe spam
Hola, podrias resetear el identitie con

DBCC CHECKIDENT

Revisa en los BOL como se usa.

Pero tambien te recomiendo que no uses identities para numerar cosas, solo
usalos como campos internos.

Te paso un link donde muestro como podrias hacer esto:

http://www.microsoft.com/spanish/ms...art187.asp




Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Ayuda para particionar una Tabla..."
escribió en el
mensaje news:
Hola Grupo sqlserver: Ojalá alguien ya haya solucionado un problema asi,
muchas gracias por su colaboración.
Tengo una tabla con una columna identity, si yo elimino unos registros y
requiero despues insertar, el número asignado al identity continua a
partir
del último valor.
Como puedo hacerle para que al insertar un registro si ya elimine datos
inicie a partir del número que quedo en la tabla.
Muchas gracias.
Saludos
Gabriela Betzabé





Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.781 / Virus Database: 527 - Release Date: 25/10/2004
Respuesta Responder a este mensaje
#3 Luis Ramírez
02/11/2004 - 20:54 | Informe spam
Primero...

Para q queres asignarle un consecutivo si luego lo queres manipular??
SUGERENCIA no lo hagas IDENTITY

En ese caso deberias de hacer el campo que no sea identity y al insertar
seleccionar vos el campo de manera "manual" quiza un MAX(campo)+1





"Ayuda para particionar una Tabla..."
wrote in message
news:
Hola Grupo sqlserver: Ojalá alguien ya haya solucionado un problema asi,
muchas gracias por su colaboración.
Tengo una tabla con una columna identity, si yo elimino unos registros


y
requiero despues insertar, el número asignado al identity continua a


partir
del último valor.
Como puedo hacerle para que al insertar un registro si ya elimine


datos
inicie a partir del número que quedo en la tabla.
Muchas gracias.
Saludos
Gabriela Betzabé
Respuesta Responder a este mensaje
#4 Miguel Egea
02/11/2004 - 22:20 | Informe spam
Ojo con el max(X) +1, esto puede devolver el mismo valor a más de una
conexión, y generar problemas de concurrencia, amén de ofrecer un dudoso
rendimiento en determinadas circunstancias y poder ser fuente de fuertes
deadlocks (se nota que me gusta :-) ). No quiero defender a los identitys, ni
mucho menos.

Puede usar nuestro amigo una tabla de contadores y recuperar el valor con
updates de este tipo
update @variable=valor=valor+1 from tablacontadores where clave='XX'

Saludos
Miguel Egea

"Luis Ramírez" escribió:

Primero...

Para q queres asignarle un consecutivo si luego lo queres manipular??
SUGERENCIA no lo hagas IDENTITY

En ese caso deberias de hacer el campo que no sea identity y al insertar
seleccionar vos el campo de manera "manual" quiza un MAX(campo)+1





"Ayuda para particionar una Tabla..."
wrote in message
news:
> Hola Grupo sqlserver: Ojalá alguien ya haya solucionado un problema asi,
> muchas gracias por su colaboración.
> Tengo una tabla con una columna identity, si yo elimino unos registros
y
> requiero despues insertar, el número asignado al identity continua a
partir
> del último valor.
> Como puedo hacerle para que al insertar un registro si ya elimine
datos
> inicie a partir del número que quedo en la tabla.
> Muchas gracias.
> Saludos
> Gabriela Betzabé



Respuesta Responder a este mensaje
#5 Guillermo Roldán
02/11/2004 - 22:33 | Informe spam
Estoy de acuerdo con lo que han dicho nuestros compañeros, pero también
quería sugerirte una solución casera (como el flan de huevo ;-).

En algunas aplicaciones, se utiliza una tabla de contadores, de tal modo que
siempre que se inserta un registro se toma de dicha tabla y se incrementa
para que el siguiente sea efectivamente el siguiente. Creo que los señores
de Factura Plus hacen algo parecido, si no recuerdo mal (por poner un
ejemplo, aunque sea con DBFs).

Esto en ocasiones es un rollo y resulta más adecuado utilizar un Identity o
un Select MAX(ID). Sin embargo tiene otras ventajas:

1.- Es fácilmente re-iniciable. Es decir, si queremos empezar a repartir
números desde un valor determinado... pues nada, actualizamos nuestra tabla
contadores y solucionado.
2.- Resulta muy útil cuando quieres compartir el mismo número de secuencia
entre distintas tablas. Algo similar a como se haría en ORACLE con los
objetos Secuencia y un Trigger BEFORE INSERT FOR EACH ROW (si no recuerdo
mal). Un ejemplo, sería un ID de documento, si almacenamos documentos en
distintas tablas.

Saludos,

Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain




"Ayuda para particionar una Tabla..."
escribió en el
mensaje news:
Hola Grupo sqlserver: Ojalá alguien ya haya solucionado un problema asi,
muchas gracias por su colaboración.
Tengo una tabla con una columna identity, si yo elimino unos registros


y
requiero despues insertar, el número asignado al identity continua a


partir
del último valor.
Como puedo hacerle para que al insertar un registro si ya elimine


datos
inicie a partir del número que quedo en la tabla.
Muchas gracias.
Saludos
Gabriela Betzabé
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida