Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Utilizar Scope_Identity() como parametro

Estas en el tema de Utilizar Scope_Identity() como parametro en el foro de SQL Server en Foros del Web. Hola que tal, acabo de hacer una thread que por ahí resulto ser un tanto largo y confuso, lo que necesito es saber es si ...
  #1 (permalink)  
Antiguo 16/04/2013, 13:52
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 17 años
Puntos: 2
Utilizar Scope_Identity() como parametro

Hola que tal, acabo de hacer una thread que por ahí resulto ser un tanto largo y confuso, lo que necesito es saber es si en una misma query puedo utilizar el valor que obtengo de un Scope_Identity como parámetro para un siguiente insert, seria algo asi:

Código SQL:
Ver original
  1. INSERT INTO [Empresas]
  2. ([RazonSocial], [Domicilio])
  3. SELECT [RazonSocial], [Domicilio]]
  4. FROM Empresas E
  5. SELECT EmpresaId = Scope_Identity()
  6. INSERT INTO [Compras]
  7. ([Monto], [EmpresaId])
  8. VALUES
  9. (Monto, @EmpresaId)

Mi duda esta en el segundo insert, el monto ya se de donde tengo que traerlo pero @EmpresaId es el valor que se me acaba de otorgar en el primer Insert, es posible utilizar el valor que obtengo con el Scope_Identity?
  #2 (permalink)  
Antiguo 16/04/2013, 14:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Utilizar Scope_Identity() como parametro

para esto podria ser con un trigger y usar la tabla inserted del trigger :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/04/2013, 16:21
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Utilizar Scope_Identity() como parametro

La funcion SCOPE_IDENTITY(), de dara el numero identity, que la conexion hizo
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 17/04/2013, 07:25
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 17 años
Puntos: 2
Respuesta: Utilizar Scope_Identity() como parametro

Libras puede ser lo que me sugerís sin embargo no lo apliqué porque la idea era no aumentar la cantidad de triggers y SP que tengo un montón, entre los creados por mi y por el generador de código. iislas el uso q siempre le di a Scope_Identity() fue recuperar el Id dentro del mismo Insert que lo genera. Por lo que vi, también esta la opción @@Identity pero no conozco bien las diferencias entre una y otra. Para el caso ya lo resolví a fuerza de código utilizando los SP que me provee NetTiers. Me queda la duda de cual habría sido la manera mas prolija, pero bueno con mas tiempo investigaré un poco mejor esta cuestión, gracias por siempre responder, saludos...
  #5 (permalink)  
Antiguo 17/04/2013, 11:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Utilizar Scope_Identity() como parametro

@@Identity, te da le ULTIMO IDENTITY que se haya generado en tu base, NO IMPORTANDO la conexion, SCOPE_IDENTITY(), te de el ULTIMO IDENTITY que haya generado la conexion que lo ejecuta.

Estos es, si yo quiero saber mediante mi conexion que identity genere, lo hago con SCOPE_IDENTITY(), mientras que si quisiera saber que identity (ultimo) se genero en TODA MI BASE, no importanto la conexion, lo hago con @@Identity.

¿Me explique?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 18/04/2013, 06:39
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 17 años
Puntos: 2
Respuesta: Utilizar Scope_Identity() como parametro

Bien ahí, estuve leyendo la pagina de Pinal Dave y no terminaba de entender la diferencia. Vos la explicaste en castellano y mas simple asi q se entendio perfecto, ahora te falta nomas decirme como utilizo dentro del mismo SP el Id que obtengo con Scope_Identity() como parámetro
  #7 (permalink)  
Antiguo 18/04/2013, 13:25
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Utilizar Scope_Identity() como parametro

Código SQL:
Ver original
  1. DECLARE @MyIdentity INT
  2. INSERT...........
  3. SET @MyIdentity = SCOPE_IDENTITY()
__________________
MCTS Isaias Islas

Etiquetas: insert, parametro, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.