Uso de Identity

Uso Identity

Identity es una propiedad que permite que un campo en una tabla incremente su valor de manera automática al insertar los registros en ella.
Para el uso de la propiedad Identity el tipo de dato debe ser entero Int. Es necesario definir un valor inicial y un valor de incremento.
Es importante anotar que Identity no asegura la unicidad de valor, esta únicamente es posible con la restricciones Primary key, Unique o
con el índice Unique. Solamente puede existir una columna por tabla con la propiedad Identidad.

Ejemplo

En el ejemplo, se crea una tabla con la propiedad Identity.
Se insertan registros, luego se eliminan, y si fuera
posible siempre se debe tener en cuenta el valor de Identity.

Create table Personas
(
Codigo int Primary key not null identity(1,1) ,
NombreCompleto nvarchar(200)
)
go

Insertar registros
insert into Personas (NombreCompleto)
values (‘Arturo Pérez’),(‘Fernando Sánchez’),(‘Antonio Ríos’),(‘José Campos’)
go
Listar los registros.
select * from Personas
go
Los registros anteriores toman los valores de Identidad del 1 al 4.




Para ver el valor de Indentity. Reporta Null si no se ha ingresado registros con Identidad.
select @@IDENTITY
go

Si insertamos dos serían los números 5 y 6.
insert into Personas (NombreCompleto)
values (‘Rosa Alcántara’),(‘Yolanda Mejía’)
go

Si se eliminan físicamente los registros 5 y 6 quedarían del 1 al 4, al insertar uno nuevo
¿qué código debería tener?
delete Personas where Codigo in (5,6)
go

Ahora quedar sólo del 1 al 4
Agregar el 5
insert into Personas (NombreCompleto)
values (‘Pedro Picapiedra’)
go
Al insertar el registro, se creo con el valor de 7, que era
el Identity que debería seguir.

Corregir, antes de agregar, se debe especificar el valor de Identity en 4
Borrar el registro primero
delete Personas where Codigo = 7
go

Usar DBCC CheckIdent
DBCC CHECKIDENT (Tabla, RESEED ,Valor)

Para regresar el valor de Identity a 4
dbcc checkident (Personas, Reseed, 4)
go

 Ahora insertar el Quinto registro.
insert into Personas (NombreCompleto)
values (‘Pedro Picapiedra’)
go

El listado se muestra
select * from Personas
go

Si se borran todos los registros
delete Personas
dbcc checkident (Personas, Reseed, 0)
go