Obtener Identity sin Set No Count

15/06/2005 - 10:16 por Juan Ant. | Informe spam
Hasta ahora estoy obteniendo el último Identity generado de esta
forma:

set nocount on
insert into
select @@identity
set nocount off

Todo ello ejecutado de un golpe. He probado a hacer por separado la
Insert y la Select @@identity, y parece que funciona perfectamente,
pero recordar que esto tenía algún problema. ¿Puede ser? ¿Debo
utilizar siempre el set nocount?

Estoy conectándome mediante ADO.

Gracias!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
15/06/2005 - 14:01 | Informe spam
Juan,

Estas ejecutando estas sentencias desde un procedimineto almacenado?

El problema es que si no usas "set nocount on", entonces ADO recivira varios
recordsets, ya que el mensaje de cuantas filas fueron afectadas por la
sentencia insert y ademas obtendras otro por el "select @@identity" y otro
mas por el mensaje de cuantas filas fueron afectadas por el select anterior.
Para procesar estos recordsets debes usar el metodo nextrecordset del objeto
recordset. Si estas usando un procedimiento almacenado con parametros de
salida, no tendras acceso a estos, asi como al valor de retorno del sp, hasta
que no hayas procesado todos los recordsets devueltos.


AMB

"Juan Ant." wrote:


Hasta ahora estoy obteniendo el último Identity generado de esta
forma:

set nocount on
insert into
select @@identity
set nocount off

Todo ello ejecutado de un golpe. He probado a hacer por separado la
Insert y la Select @@identity, y parece que funciona perfectamente,
pero recordar que esto tenía algún problema. ¿Puede ser? ¿Debo
utilizar siempre el set nocount?

Estoy conectándome mediante ADO.

Gracias!


Respuesta Responder a este mensaje
#2 Maxi
16/06/2005 - 01:58 | Informe spam
Hola, el nocount yo lo usuaria, lo que revisaria si es correcto el uso de
@@identity o Scope_identity()


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

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

"Juan Ant." escribió en el mensaje
news:

Hasta ahora estoy obteniendo el último Identity generado de esta
forma:

set nocount on
insert into
select @@identity
set nocount off

Todo ello ejecutado de un golpe. He probado a hacer por separado la
Insert y la Select @@identity, y parece que funciona perfectamente,
pero recordar que esto tenía algún problema. ¿Puede ser? ¿Debo
utilizar siempre el set nocount?

Estoy conectándome mediante ADO.

Gracias!
Respuesta Responder a este mensaje
#3 Juan Ant.
17/06/2005 - 22:09 | Informe spam
Pero tiene algo malo el ejecutar el select @@identity por separado? Es
decir, sin que forme parte del lote de sentencias donde está la
Insert. Dicho de otra forma: puede haber algún caso en el que el
select @@identity no devuelva el último valor autonumérico generado?

Gracias
Respuesta Responder a este mensaje
#4 Maxi
18/06/2005 - 16:57 | Informe spam
Hola, el tema es este, @@identity retorna el ultimo valor generado pero no
del alcance actual, por ej:

Alguien inserta un valor, luego otro alguien inserta otro valor en otra
tabla y @@identity mostrar el ultimo sin importar de que tabla es. Me
explico?

Yo te recomendaria Scope_identity()


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

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

"Juan Ant." escribió en el mensaje
news:
Pero tiene algo malo el ejecutar el select @@identity por separado? Es
decir, sin que forme parte del lote de sentencias donde está la
Insert. Dicho de otra forma: puede haber algún caso en el que el
select @@identity no devuelva el último valor autonumérico generado?

Gracias
Respuesta Responder a este mensaje
#5 Juan Ant.
18/06/2005 - 18:28 | Informe spam
Pero @@identity va por conexión, no? O sea, entiendo que si otro
usuario inserta otro valor, no afecta a lo que a ti te devuelva
@@identity, porque siempre te devolverá el último autonumérico
generado para tu conexión. No es así?

En ese caso, si tu sabes que lo ejecutas a continuación de la insert,
no necesitas ejecutarlo dentro del mismo lote de instrucciones.
Correcto?

Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida