Como averiguar un campo que se acaba de ingresar...

11/12/2006 - 20:46 por Carmelo J. Morales Muñoz | Informe spam
bueno, el asunto no ha quedado claro pero es que no sabía como explicarlo, a
ver:

tengo un campo auto incremento, lo llamo IdCliente


Si hago un Insert into clientes (Nombre,Apellidos)
values ('Paco','Fernandes fernandez')


¿como se que Id le ha agregado? (ya que lo asigna sql solo).
 

Leer las respuestas

#1 Maxi
11/12/2006 - 22:07 | Informe spam
Hola, si el campo es autoincremental podes usar alguna de las funciones que
ya dispone SQL para saber cual se inserto:

SCOPE_IDENTITY
Devuelve el último valor IDENTITY insertado en una columna IDENTITY en el
mismo alcance. Un alcance es un módulo (un procedimiento almacenado,
desencadenador, función o lote). Por tanto, dos instrucciones están en el
mismo alcance si se encuentran en el mismo procedimiento almacenado, función
o lote.

@@IDENTITY
Nueva información: septiembre de 2001.

Devuelve el último valor de identidad insertado.

Sintaxis
@@IDENTITY

Tipos devueltos
numeric

Observaciones
Cuando se completa una instrucción INSERT, SELECT INTO o de copia masiva,
@@IDENTITY contiene el último valor de identidad generado por la
instrucción. Si la instrucción no afectó a ninguna tabla con columnas de
identidad, @@IDENTITY devuelve NULL. Si se insertan múltiples filas, lo que
genera múltiples valores de identidad, @@IDENTITY devuelve el último de
ellos. Si la instrucción activa uno o más desencadenadores que realizan
inserciones que, a su vez, generan valores de identidad, al invocar
@@IDENTITY inmediatamente después de la instrucción se obtiene el último
valor de identidad generado por los desencadenadores. Si se dispara un
desencadenador después de una acción de inserción en una tabla con una
columna de identidad y el desencadenador se inserta en otra tabla sin una
columna de identidad, @@IDENTITY devolverá el valor de identidad de la
primera inserción. El valor de @@IDENTITY no toma un valor anterior si la
instrucción INSERT, SELECT INTO o de copia masiva finalizan con error, ni
cuando se deshace la transacción.

Las funciones @@IDENTITY, SCOPE_IDENTITY e IDENT_CURRENT se parecen en que
devuelven el último valor insertado en la columna IDENTITY de una tabla.

@@IDENTITY y SCOPE_IDENTITY devolverán el último valor de identidad generado
en una tabla en la sesión actual. No obstante, SCOPE_IDENTITY sólo devuelve
el valor en el alcance actual; @@IDENTITY no se limita a un alcance
específico.

IDENT_CURRENT no está limitado por el alcance y la sesión; se limita a una
tabla especificada. IDENT_CURRENT devuelve el valor de identidad generado
para una tabla específica en cualquier sesión y cualquier alcance. Para
obtener más información, consulte IDENT_CURRENT.

El alcance de la función @@IDENTITY es el servidor local en el que se
ejecuta. Esta función no puede aplicarse a servidores remotos o vinculados.
Para obtener un valor de identidad en un servidor distinto, ejecute un
procedimiento almacenado en ese servidor remoto o vinculado y haga que el
procedimiento almacenado, que se ejecuta en el contexto del servidor remoto
o vinculado, recopile el valor de identidad y lo devuelva a la conexión que
lo llama en el servidor local.

IDENT_CURRENT
Devuelve el último valor de identidad generado para una tabla especificada
en cualquier sesión y cualquier alcance.



Saludos

[Microsoft MVP SQL Server]
www.sqlgurus.org
Buenos Aires - Argentina
http://maxiaccotto.blogspot.com/
"Carmelo J. Morales Muñoz" wrote in message
news:%
bueno, el asunto no ha quedado claro pero es que no sabía como explicarlo,
a
ver:

tengo un campo auto incremento, lo llamo IdCliente


Si hago un Insert into clientes (Nombre,Apellidos)
values ('Paco','Fernandes fernandez')


¿como se que Id le ha agregado? (ya que lo asigna sql solo).






begin 666 update_topic.gif
M1TE&.#EA$@`6`/<`````````A ``_P!"0@"$A #_`$*$A(0`A(2$`(2$A(2$
M_\;&QO\``/__`/______________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M_____________________RP`````$@`6```(? `="!188*#!@PX*$ARH$.'"
MA \=,H384"+#!046:-RHD6&!?E2XP$')@P4K"CQYDF!(E0IBQEP8$B+"
M!0ILAI3)=,GT0M(@4JT.A,DS]7*H6:U('3GT.9*LTJU:K3
3I5TM<C4Y=2S'LQRC>KUJ-" `.P``
`
end

Preguntas similares