Personal WebSite of Leonardo Sasso

No utilizar @@identify cuando existen triggers asociados PDF Imprimir E-mail
Articulos - SQL
  
Lunes, 15 de Febrero de 2010 10:36

No utilizar la variable @@Identity en los SP (Stored Procedures) cuando en las tablas involucradas en estos ultimos, posean triggers.

 

La razon:

Al realizar algun insert desde el SP el valor de la variable @@identity va cambiando, el problema radica en que si el trigger realiza tambien un trigger en otra tabla, entonces el valor de @@identity que obtendremos en el SP sera el valor de la ultima tabla y no el de la tabla buscada en el SP, debido a que dicha funcion no esta restringida por el Scope.

 

La solucion:
Se recomienda en dichos casos utilizar la funcion SCOPE_IDENTITY() que restringe el scope en el cual estamos trabajando y no es afectada por los triggers

 

Descripcion MSDN de la funcion SCOPE_IDENTITY()
Devuelve el último valor de identidad insertado en una columna de identidad en el mismo ámbito. Un ámbito es un módulo: un procedimiento almacenado, desencadenador, función o lote. Por tanto, dos instrucciones están en el mismo ámbito si se encuentran en el mismo procedimiento almacenado, función o lote.



 

Buscar:

Estadisticas

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy26
mod_vvisit_counterAyer32
mod_vvisit_counterEsta Semana403
mod_vvisit_counterEste Mes253
mod_vvisit_counterTotal14476