identity

10/06/2005 - 22:54 por Daniel | Informe spam
tengo una tabla (tabla1) con una columna (columna1) identity

habitualmenet elimino registros y luego inserto otros.

Necesito que cada vez que inserte nuevos registros en la tabla1 el valor de
la columna1 se genere desde 1.

Ej.
1. tengo 10 registros con columna1 desde 1 a 10
2. elimino los 10 registros
3. insert 5 registros con valores de columna1 desde 11 hasta 15

lo que quiero es que el valor de columna 1 sea nuevamente desde 1 hasta 5

el problema es que no puedo eliminar tabla1 para generarla nuevamente


Cualquier ayuda les agradezco!!!!

Preguntas similare

Leer las respuestas

#1 Isaias
11/06/2005 - 01:14 | Informe spam
Daniel

Las columnas con propiedad IDENTITY son regularmente aquellas que NO
SUFRIRAN MODIFICACION (update, delete) alguna.

No es tan sencillo re-iniciar nuevamente el contador, ve el siguiente ejemplo:

create table prueba (identificador int identity(1,1), NOMBRE VARCHAR(20))
INSERT INTO prueba VALUES('ADRIANA')
INSERT INTO prueba VALUES('MARIBEL')
INSERT INTO prueba VALUES('MARIANA')
INSERT INTO prueba VALUES('FABIOLA')
SELECT * FROM PRUEBA
DELETE PRUEBA WHERE identificador = 2

BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_prueba
(
identificador int NOT NULL,
NOMBRE varchar(20) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.prueba)
EXEC('INSERT INTO dbo.Tmp_prueba (identificador, NOMBRE)
SELECT identificador, NOMBRE FROM dbo.prueba TABLOCKX')
GO
DROP TABLE dbo.prueba
GO
EXECUTE sp_rename N'dbo.Tmp_prueba', N'prueba', 'OBJECT'
GO
COMMIT

BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_prueba
(
identificador int NOT NULL IDENTITY (1, 1),
NOMBRE varchar(20) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.prueba)
EXEC('INSERT INTO dbo.Tmp_prueba (NOMBRE)
SELECT NOMBRE FROM dbo.prueba TABLOCKX')
GO
DROP TABLE dbo.prueba
GO
EXECUTE sp_rename N'dbo.Tmp_prueba', N'prueba', 'OBJECT'
GO
COMMIT

SELECT * FROM PRUEBA

Aunque ejecutar esto cada que BORRES un registro, lo veo muy FUERA DE USO.

¿Tu que opinas'
Respuesta Responder a este mensaje
#2 Alejandro Mesa
11/06/2005 - 13:49 | Informe spam
Puedes ver el comando "dbcc checkident" rn los libros en linea. Se usa para
resetear la semilla de la columna identity.

Ejemplo:

delete t1
where ...

if @@rowcount > 0 and not exists(select * from t1)
dbcc checkident(t1, reseed, 1)

...


Tambien se reseate la semilla de la columna identity cuando usas la
sentencia "truncate table" para borrar todas las filas de una tabla, esta
sentencia no hace disparar los triggers "for delete" or "instead of delete"
en caso de que alguno existiera.


AMB

"Daniel" wrote:

tengo una tabla (tabla1) con una columna (columna1) identity

habitualmenet elimino registros y luego inserto otros.

Necesito que cada vez que inserte nuevos registros en la tabla1 el valor de
la columna1 se genere desde 1.

Ej.
1. tengo 10 registros con columna1 desde 1 a 10
2. elimino los 10 registros
3. insert 5 registros con valores de columna1 desde 11 hasta 15

lo que quiero es que el valor de columna 1 sea nuevamente desde 1 hasta 5

el problema es que no puedo eliminar tabla1 para generarla nuevamente


Cualquier ayuda les agradezco!!!!





Respuesta Responder a este mensaje
#3 Maxi
11/06/2005 - 15:53 | Informe spam
Hola, los identities no dan esa funcionalidad y no se los deberia en lo
absoluto usar para estas cosas. Te paso un link donde explico un poco mas el
tema y doy una solucion a la generacion de numeros por Stores

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


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Daniel" escribió en el mensaje
news:
tengo una tabla (tabla1) con una columna (columna1) identity

habitualmenet elimino registros y luego inserto otros.

Necesito que cada vez que inserte nuevos registros en la tabla1 el valor
de
la columna1 se genere desde 1.

Ej.
1. tengo 10 registros con columna1 desde 1 a 10
2. elimino los 10 registros
3. insert 5 registros con valores de columna1 desde 11 hasta 15

lo que quiero es que el valor de columna 1 sea nuevamente desde 1 hasta 5

el problema es que no puedo eliminar tabla1 para generarla nuevamente


Cualquier ayuda les agradezco!!!!





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida