SQL - trigger tarda mucho y no me permite seguir insertando

 
Vista:

trigger tarda mucho y no me permite seguir insertando

Publicado por Javier (1 intervención) el 15/04/2017 00:18:19
Requiero tomar varias lecturas en muy corto tiempo y a la vez verificar si existen antes de insertarlas para no duplicarlas.

En mi aplicacion ejecuto un query con un MERGE para hacer el INSERT o el UPDATE segun se requiera y funciono bien durante algun tiempo, pero conforme agregue mas CLIENTES al servidor detecte que no todas las lecturas se estaban registrando en SQL.

decidi insertar todas las lecturas en una tabla alterna <TABLE2> para validarlas y procesarlas en un segundo plano, y cree un SP para hacer el INSERT/UPDATE. hasta aqui todo bien.

Cual seria la manera eficiente para asignar el registro a mi SP y depurarlo de la TABLE2? intente poner un TRIGGER que llamara al SP cada ves que insertara un nuevo registro en TABLE2 pero si el SP seguia trabajando mientras se insertaba un nuevo registro en TABLE2 lo omitia (la lectura en cuestion no se insertaba en TABLE2, por ende no se contempla en la validacion del SP y tampoco marca ningun error)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 16
Ha disminuido su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

trigger tarda mucho y no me permite seguir insertando

Publicado por Ismael (5 intervenciones) el 31/08/2017 19:48:54
Hola,

En vez de llamar a un SP externo en el trigger, intenta crear un mini SP en el trigger, de tal forma que gestione todo en el mismo trigger.
De todas formas, no se si sabes que por ejemplo, en un trigger, puedes jugar con el AFTER UPDATE, con el que puedes jugar también con el registro actualizado o insertado, mas o menos podría ser así:

1
2
3
4
5
6
7
8
9
10
IF EXISTS (SELECT idd
           FROM tabla2 p
           JOIN inserted AS i
           ON p.idd= i.idd
          )
BEGIN
RAISERROR ('A vendor''s credit rating is too low to accept new
purchase orders.', 16, 1);
ROLLBACK TRANSACTION;
RETURN

No se si el ejemplo estará bien, porque no lo he testeado, pero para que veas que dentro del trigger se puede trabajar con la tupla inserted,deleted y updated, dependiendo del trigger que estemos realizando.

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar