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!!!!
 

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'

Preguntas similares