FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿ Me puedo fiar de SCOPE_IDENTITY?
Hola a todos;
Estoy escribiendo un procedimiento almacenado que inserta un registro de cabecera en una tabla T1 y varios registros de detalle en otra tabla T2. La tabla T1 tiene definida una clave primaria en un campo identidad que es por la que se enlaza con los registros de la tabla T2. Realizo los siguientes pasos: Insert into T1 Select SCOPE_IDENTITY Inset into T2 (con el valor identidad que he obtenido) Mi duda está en que pasa si se están ejecutando varias instancias del procedimiento a la vez (se trata de una aplicación en internet). ¿Puedo estar seguro de que SCOPE_IDENTITY me devuelve la identidad insertada en "su instancia" de procedimiento alamcenado y no en otras? En caso contrario, ¿hay otra forma de hacer esta inserción maestro detalle? Muchas gracias por adelantado... Carlos. |
#3
|
||||
|
||||
Buenas, la verdad que nunca he utilizado el SCOPE_IDENTITY, no porque no lo conozca, sino porque el comando que utilizo, es tal vez más usado ó esta en más ejemplos.
Código:
Insert into T1 (campos....) values (valores...) Insert into T2 (id_tabla_t1, campos....) values(@@identity, valores) El @@identity es un comando que va por la conexión, o sea que cuando inicias el procedimiento, hasta que termina, solo usa una unica conexión con la DB, asi que el @@identity sera el último ID que hayas insertado desde esa conexión, por lo cual si tienes multiples instancias del procedimiento en ejecución el resultado del @@identity sera distinto para cada una, nunca se equivoca... jejeje Usalo sin miedo, yo tengo más de 10000 transacciones diarias de inserción y jamas se ha producido un fallo.
__________________
El diseño dira si tiene futuro... |
#4
|
|||
|
|||
Gracias a ambos. Lo utilizaré pues sin miedo...
|
|
|
|