scope_identity me devuelve NULL

14/12/2009 - 12:45 por Jesus | Informe spam
hola a todos:

estoy intentando consultar el ultimo valor autonumerico que he creado de en
ambito actual y la sesion actual y seimrep me devuelve el valor NULL, seim
embargo @@identity e IDENT_current() me funcionan correctamente.
Lo consulto desde una aplicación de VB6, justo despues de realizar el insert
en la tabla. hago lo siguiente:

Set r_aux = con.OpenResultset("select @@identity")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select SCOPE_IDENTITY()")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select IDENT_CURRENT('tabla')")
Res = r_aux(0)

todos me devuelven el valor correcto, excepto SCOPE_IDENTITY, que es justo
la que quiero consultar, ya que en determinadas ocasiones no coinciden.

Un saludo y gracias
 

Leer las respuestas

#1 Carlos Sacristan
14/12/2009 - 13:04 | Informe spam
En la ayuda viene la explicación de por qué no te funciona:

"SCOPE_IDENTITY y @@IDENTITY devuelven los últimos valores de identidad
generados en una tabla en la sesión actual. No obstante, SCOPE_IDENTITY solo
devuelve los valores insertados en el ámbito actual; @@IDENTITY no se limita
a un ámbito específico."

Tienes que consultar SCOPE_IDENTITY en la misma instrucción donde haces el
insert. Bueno, de hecho lo recomendable sería que te crearas un
procedimiento almacenado que realizar la inserción y tuvieras un parámetro
de salida al que le asignaras el valor de SCOPE_IDENTITY.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Jesus" wrote in message
news:
hola a todos:

estoy intentando consultar el ultimo valor autonumerico que he creado de
en
ambito actual y la sesion actual y seimrep me devuelve el valor NULL, seim
embargo @@identity e IDENT_current() me funcionan correctamente.
Lo consulto desde una aplicación de VB6, justo despues de realizar el
insert
en la tabla. hago lo siguiente:

Set r_aux = con.OpenResultset("select @@identity")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select SCOPE_IDENTITY()")
Res = r_aux(0)

Set r_aux = con.OpenResultset("select IDENT_CURRENT('tabla')")
Res = r_aux(0)

todos me devuelven el valor correcto, excepto SCOPE_IDENTITY, que es justo
la que quiero consultar, ya que en determinadas ocasiones no coinciden.

Un saludo y gracias

Preguntas similares