![]() |
¿ 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. |
|
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:
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. |
Gracias a ambos. Lo utilizaré pues sin miedo...
|
La franja horaria es GMT +2. Ahora son las 21:18:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi