Diferencia entre sesion y ambito

28/02/2006 - 15:11 por Jordi | Informe spam
Hola,
Estoy mirando las propeidades @@IDENTITY, IDENT_CURRENT y SCOPE_IDENTITY.
Pero no lo acabo de comprender, se me escapan los conceptos sesión y
ámbito.

Alguien puede ayudarme

Preguntas similare

Leer las respuestas

#6 Mauro
01/03/2006 - 16:02 | Informe spam
no, por que el @@identity corresponde a la session
"Maxi" wrote in message
news:
No coincido con eso, el Scope esta dentro del ambito y el @@identity no, y
eso no tiene nada que ver con los triggers.
Si entre que sucedio el identity y el @@identity se metio otro valor
identity en cualquier tabla entonces estaremos retornando este y no el


valor
que pretendiamos, ojo con esto



Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Mauro" escribió en el mensaje
news:
> si, hay que tener cuidado con los scopes cuando se usan triggers, pero


si
> se
> sabe que se esta haciendo no hay problema.
> de los BOL
> For example, you have two tables, T1 and T2, and an INSERT trigger


defined
> on T1. When a row is inserted to T1, the trigger fires and inserts a row
> in
> T2. This scenario illustrates two scopes: the insert on T1, and the


insert
> on T2 as a result of the trigger.
>
> Assuming that both T1 and T2 have IDENTITY columns, @@IDENTITY and
> SCOPE_IDENTITY will return different values at the end of an INSERT
> statement on T1.
>
> @@IDENTITY will return the last IDENTITY column value inserted across


any
> scope in the current session, which is the value inserted in T2.
>
> SCOPE_IDENTITY() will return the IDENTITY value inserted in T1
>
> saludos
>
> Mauro
>
> "Maxi" wrote in message
> news:
>> Ojo mauro con lo que dices, no es aconsejable usar el @@identity porque
>> no
>> es del ambito y podrias estar levantando un identity distinto.
>>
>> Lo aconsejable es usar Scope_identity()
>>
>>
>> Salu2
>> Maxi [MVP SQL SERVER]
>> www.sqlgurus.org
>>
>>
>> "Mauro" escribió en el mensaje
>> news:enh1X$
>> > No se cual es el uso que le quieres dar pero por ejemplo, @@identity


te
>> > puede servir para cuando insertas una fila y quieres saber cual es su
>> > identity para insertarlo inmediatamnte en una tabla relacionada sin
>> > necesidad de buscarlo. seria algo asi como
>> >
>> > INSERT INTO tabla (campos)
>> > VALUES (valores)
>> > UPDATE tablarelacionada
>> > SET idFK = @@identity --este es el id del ultimo row insertado en
>> > tabla1
>> > WHERE id=@ID
>> >
>> > "Maxi" wrote in message
>> > news:
>> >> Hola, a ver:
>> >>
>> >> Ambito: Donde estoy ejecutando: por ej, si tengo un Store el ambito


es
>> >> dentro del Store no fuera de el
>> >> Sesion: Es un nivel mas amplio que ambito mirando desde lo


particular
>> >> a
>> >> lo
>> >> general.
>> >>
>> >> Entonces: cuando vos haces @@identity te va a traer el ultimo valor
>> > identity
>> >> de toda una sesion, si esa sesion ejecutra 3 Sp
>> >> (Facturas - Remitos - Cobranzas) en este orde, te traera el de
> cobranzas
>> > por
>> >> ser el ultimo identity.
>> >>
>> >> El motor trabaja en simultaneo por eso se recomienda sacar los


valores
>> >> identity del ambito para estar 100% seguro que son del modulo por ej
>> >> Facturas
>> >>
>> >>
>> >> Salu2
>> >> Maxi [MVP SQL SERVER]
>> >> www.sqlgurus.org
>> >>
>> >>
>> >> "Jordi" escribió en el mensaje
>> >> news:du1lhc$n7k$
>> >> > Hola,
>> >> > Estoy mirando las propeidades @@IDENTITY, IDENT_CURRENT y
>> > SCOPE_IDENTITY.
>> >> > Pero no lo acabo de comprender, se me escapan los conceptos


sesión
>> >> > y
>> >> > ámbito.
>> >> >
>> >> > Alguien puede ayudarme
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#7 Maxi
01/03/2006 - 18:55 | Informe spam
Aja justamente :-) si en esa sesion se hizo otra cosa que pasa? no
relaciones sesion con unico usuario, si por ej tenes un comector general
donde se abre una sesion y los otros si la ven abierta la utilizan vas a
estar en serios problemas


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Mauro" escribió en el mensaje
news:evc$
no, por que el @@identity corresponde a la session
"Maxi" wrote in message
news:
No coincido con eso, el Scope esta dentro del ambito y el @@identity no,
y
eso no tiene nada que ver con los triggers.
Si entre que sucedio el identity y el @@identity se metio otro valor
identity en cualquier tabla entonces estaremos retornando este y no el


valor
que pretendiamos, ojo con esto



Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Mauro" escribió en el mensaje
news:
> si, hay que tener cuidado con los scopes cuando se usan triggers, pero


si
> se
> sabe que se esta haciendo no hay problema.
> de los BOL
> For example, you have two tables, T1 and T2, and an INSERT trigger


defined
> on T1. When a row is inserted to T1, the trigger fires and inserts a
> row
> in
> T2. This scenario illustrates two scopes: the insert on T1, and the


insert
> on T2 as a result of the trigger.
>
> Assuming that both T1 and T2 have IDENTITY columns, @@IDENTITY and
> SCOPE_IDENTITY will return different values at the end of an INSERT
> statement on T1.
>
> @@IDENTITY will return the last IDENTITY column value inserted across


any
> scope in the current session, which is the value inserted in T2.
>
> SCOPE_IDENTITY() will return the IDENTITY value inserted in T1
>
> saludos
>
> Mauro
>
> "Maxi" wrote in message
> news:
>> Ojo mauro con lo que dices, no es aconsejable usar el @@identity
>> porque
>> no
>> es del ambito y podrias estar levantando un identity distinto.
>>
>> Lo aconsejable es usar Scope_identity()
>>
>>
>> Salu2
>> Maxi [MVP SQL SERVER]
>> www.sqlgurus.org
>>
>>
>> "Mauro" escribió en el mensaje
>> news:enh1X$
>> > No se cual es el uso que le quieres dar pero por ejemplo, @@identity


te
>> > puede servir para cuando insertas una fila y quieres saber cual es
>> > su
>> > identity para insertarlo inmediatamnte en una tabla relacionada sin
>> > necesidad de buscarlo. seria algo asi como
>> >
>> > INSERT INTO tabla (campos)
>> > VALUES (valores)
>> > UPDATE tablarelacionada
>> > SET idFK = @@identity --este es el id del ultimo row insertado en
>> > tabla1
>> > WHERE id=@ID
>> >
>> > "Maxi" wrote in message
>> > news:
>> >> Hola, a ver:
>> >>
>> >> Ambito: Donde estoy ejecutando: por ej, si tengo un Store el ambito


es
>> >> dentro del Store no fuera de el
>> >> Sesion: Es un nivel mas amplio que ambito mirando desde lo


particular
>> >> a
>> >> lo
>> >> general.
>> >>
>> >> Entonces: cuando vos haces @@identity te va a traer el ultimo valor
>> > identity
>> >> de toda una sesion, si esa sesion ejecutra 3 Sp
>> >> (Facturas - Remitos - Cobranzas) en este orde, te traera el de
> cobranzas
>> > por
>> >> ser el ultimo identity.
>> >>
>> >> El motor trabaja en simultaneo por eso se recomienda sacar los


valores
>> >> identity del ambito para estar 100% seguro que son del modulo por
>> >> ej
>> >> Facturas
>> >>
>> >>
>> >> Salu2
>> >> Maxi [MVP SQL SERVER]
>> >> www.sqlgurus.org
>> >>
>> >>
>> >> "Jordi" escribió en el mensaje
>> >> news:du1lhc$n7k$
>> >> > Hola,
>> >> > Estoy mirando las propeidades @@IDENTITY, IDENT_CURRENT y
>> > SCOPE_IDENTITY.
>> >> > Pero no lo acabo de comprender, se me escapan los conceptos


sesión
>> >> > y
>> >> > ámbito.
>> >> >
>> >> > Alguien puede ayudarme
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>






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