@@Indentity

13/09/2006 - 19:34 por TFS | Informe spam
Hola gente, como se puede hacer para asignar a una variable el valor
identity de el ultimo registro insertado en una tabla.

Preguntas similare

Leer las respuestas

#1 jcac
13/09/2006 - 19:55 | Informe spam
Esto te puede ayudar

Ident_Current('Nombre de Tabla')

Saludos


"TFS" escribió en el mensaje
news:e%
Hola gente, como se puede hacer para asignar a una variable el valor
identity de el ultimo registro insertado en una tabla.



Respuesta Responder a este mensaje
#2 Maxi
13/09/2006 - 20:12 | Informe spam
Hola, revisa el comando ident_current() en tus libros on line


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"TFS" escribió en el mensaje
news:e%
Hola gente, como se puede hacer para asignar a una variable el valor
identity de el ultimo registro insertado en una tabla.



Respuesta Responder a este mensaje
#3 Alejandro Mesa
13/09/2006 - 20:42 | Informe spam
TFS,

Si quieres saber el ultimo valor insertado en una columna con propiedad
identity, puedes usar @@IDENTITY, SCOPE_IDENT o IDENT_CURRENT. Dependiendo
del contexto donde quieras este valor, asi sera la funcion que debas usar.
Dejame ver como explicamos esto:

- IDENT_CURRENT

Nos devolvera el ultimo valor insertado en la tabla sin importar la sesion
ni el contexto donde se pregunte. Si tienes un procedimineto que inserta en
una tabla con columna identity y usas esta funcion, si varios usuarios estan
insertando a la vez, entonces esta te dara el ultimo.

- @@IDENTITY

Dara el ultimo insertado en la sesion (conexion) que se pregunta, no
necesariamente tiene que ser la tabla donde se inserto antes de preguntar.

- SCOPE_IDENT

El ultimo en la sesion y contexto. Por ejemplo, si lo haces en una
procedimiento, te dara el ultimo valor insertado dentro de este.

Veamos un ejemplo para que se entienda.

use northwind
go

create table dbo.t1 (
c1 int not null identity(1, 1)
)
go

create table dbo.t2 (
c1 int not null identity(1000, 1)
)
go

create trigger tr_t1_ins on dbo.t1
for insert
as
insert into dbo.t2 default values
go

create procedure dbo.p1
@i int output,
@j int output
as
set nocount on

insert into dbo.t1 default values

set @i = @@identity
set @j = scope_identity()
go

declare @i int, @j int

exec dbo.p1 @i output, @j output

select @i as i, @j as j
go

drop procedure dbo.p1
go

drop table dbo.t1, dbo.t2
go

Que valores se supone devuelva el sp la primera vez que lo ejecutamos?

Resultado:

i: 1000
j: 1

Lo que pasa aqui es que la tabla dbo.t1 tiene un trigger que inserta en la
tabla dbo.t2, por lo que @@IDENTITY devuelve el ultimo valor identity
insertado en la sesion, mientras que SCOPE_IDENTITY devuelve el ultimo
identity insertado en el procedimiento donde se pregunto.


AMB


"TFS" wrote:

Hola gente, como se puede hacer para asignar a una variable el valor
identity de el ultimo registro insertado en una tabla.




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