Que ID se genero

05/04/2005 - 23:03 por Fabian MArtucci | Informe spam
Que tal:
Quisiera averiguar el ID que se genero:
Tengo una tabla Errores con lo siguiente:
Nombre Campo: ID int usando Identida 1,1
Nombre Campo: Problema nvarchar(255)
Hago un Insert into Errores(Problema) values('Acceso a Centro de
Dsitribución') pero quiero saber que ID le dio la tabla, a esta base acceden
unas 100 terminales por lo tanto no puedo consultar con esto Select Max(id)
from Errores porque me devuelve quizas el ID que no corresponde.
Como soluciono este problema.
Gracias, Fabian

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
06/04/2005 - 03:05 | Informe spam
Mauricio,

Nada mejor que un ejemplo para exponer lo que Miguel a dicho.

use northwind
go

create table t1 (colA int identity(1, 1))
go

create table t2 (colA int identity(100, 1))
go

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

insert into t1 default values

select @@identity, scope_identity()
go

drop table t1, t2
go

Sorprendido?

El "insert into t2" esta en otro alcance (batch, procedimiento, trigger,
etc.) que el "insert into t1", por lo tanto @@identity te da el ultimo en la
coneccion y scope_identity dara el ultimo en el batch que inserto en t1.


AMB

"Mauricio López [uy]" wrote:

Miguel:

Me podrías aclarar el uso de esta función ya que no la conocía. Es
un muy buen dato. (Uso VB)

Muchas gracias.

Saludos!

Mauricio López
Maldonado - Uruguay
-
Si, es correcto, excepto que tengas un trigger que use tablas también
con
autonuméricos en cuyo caso no te devuelve el de la primera tabla sino el
de
la última. scope_identity te devuelve el del alcance actual y por tanto
el
correcto en estos casos.


-
Miguel Egea Gómez
http://www.portalsql.com
Microsoft SQL-Server MVP, MCSD, MCAD,MCT
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Mauricio López [uy]" escribió en el
mensaje news:%
> Fabián:
>
> Yo uso @@identity para devolver en un sp que inserta, el id
> autogenerado.
>
> Saludos!
>
> Mauricio López
> Maldonado - Uruguay
> -
> Que tal:
> Quisiera averiguar el ID que se genero:
> Tengo una tabla Errores con lo siguiente:
> Nombre Campo: ID int usando Identida 1,1
> Nombre Campo: Problema nvarchar(255)
> Hago un Insert into Errores(Problema) values('Acceso a Centro de
> Dsitribución') pero quiero saber que ID le dio la tabla, a esta base
> acceden
> unas 100 terminales por lo tanto no puedo consultar con esto Select
> Max(id)
> from Errores porque me devuelve quizas el ID que no corresponde.
> Como soluciono este problema.
> Gracias, Fabian
>
>



Respuesta Responder a este mensaje
#7 Miguel Egea
08/04/2005 - 23:09 | Informe spam
Hola Alejandro, si no te molesta publicaré tu ejemplo como colaboración en
portalsql.com.


-
Miguel Egea Gómez
http://www.portalsql.com
Microsoft SQL-Server MVP, MCSD, MCAD,MCT
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Alejandro Mesa" escribió en el
mensaje news:
Mauricio,

Nada mejor que un ejemplo para exponer lo que Miguel a dicho.

use northwind
go

create table t1 (colA int identity(1, 1))
go

create table t2 (colA int identity(100, 1))
go

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

insert into t1 default values

select @@identity, scope_identity()
go

drop table t1, t2
go

Sorprendido?

El "insert into t2" esta en otro alcance (batch, procedimiento, trigger,
etc.) que el "insert into t1", por lo tanto @@identity te da el ultimo en
la
coneccion y scope_identity dara el ultimo en el batch que inserto en t1.


AMB

"Mauricio López [uy]" wrote:

Miguel:

Me podrías aclarar el uso de esta función ya que no la conocía. Es
un muy buen dato. (Uso VB)

Muchas gracias.

Saludos!

Mauricio López
Maldonado - Uruguay
-
Si, es correcto, excepto que tengas un trigger que use tablas también
con
autonuméricos en cuyo caso no te devuelve el de la primera tabla sino el
de
la última. scope_identity te devuelve el del alcance actual y por tanto
el
correcto en estos casos.


-
Miguel Egea Gómez
http://www.portalsql.com
Microsoft SQL-Server MVP, MCSD, MCAD,MCT
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Mauricio López [uy]" escribió en el
mensaje news:%
> Fabián:
>
> Yo uso @@identity para devolver en un sp que inserta, el id
> autogenerado.
>
> Saludos!
>
> Mauricio López
> Maldonado - Uruguay
> -
> Que tal:
> Quisiera averiguar el ID que se genero:
> Tengo una tabla Errores con lo siguiente:
> Nombre Campo: ID int usando Identida 1,1
> Nombre Campo: Problema nvarchar(255)
> Hago un Insert into Errores(Problema) values('Acceso a Centro de
> Dsitribución') pero quiero saber que ID le dio la tabla, a esta base
> acceden
> unas 100 terminales por lo tanto no puedo consultar con esto Select
> Max(id)
> from Errores porque me devuelve quizas el ID que no corresponde.
> Como soluciono este problema.
> Gracias, Fabian
>
>






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