2014-04-28 3 views
0

est ici le scénario:Trigger - entrées multiples dans la table insérée

Lors du traitement d'un ordre d'achat grâce à notre application comptable, il insère l'entrée dans la table INVNUM et puis fait quelques mises à jour sur cette entrée insérée. J'ai un déclencheur qui va insérer un enregistrement dans une autre table basée sur l'insertion/mise à jour d'enregistrement dans la table INVNUM.

Le problème que je vais avoir est les nombreuses mises à jour qu'il fait sur cette seule entrée, où il semble que les deux dernières mises à jour, il ne fait exactement la même, donc mon déclencheur insère deux entrées, car il ne peut pas différencier entre les deux mises à jour (Les données pour les deux correspondances exactement).

Donc, fondamentalement, je veux insérer mon enregistrement basé sur la dernière mise à jour dans la table INVNUM pour cette commande d'achat.

est ici quelque chose que je suis venu avec pour essayer d'isoler la dernière entrée dans le tableau inséré:

Declare cur1 scroll cursor for (select * from Inserted) 
    Open cur1 

    FETCH LAST FROM cur1 
    While @@FETCH_STATUS = 0 

    Begin  
    Insert into JCTxLines (ID, JobID, iSource) 
    Values(3696,2,3) 

    End 

Close cur1 
Deallocate Cur1 

Ce code se bloque cependant le système et je dois fermer de celui-ci.

Vous ne savez pas si c'est la bonne façon de résoudre le problème. Je fais des recherches depuis quelques jours maintenant, ma compréhension des tableaux insérés/effacés est encore un peu limitée.

À la votre!

Répondre

0

Vous avez oublié de FETCH NEXT après l'insertion, ce qui provoque le blocage du déclencheur.

Vous pourriez également essayer SELECTION DU TOP 1 D'INSERTION?

DECLARE int 
DECLARE icursor CURSOR FOR SELECT TOP 1 AutoIndex FROM INSERTED 
OPEN icursor 
FETCH NEXT FROM icursor INTO 
WHILE @ = 0 
BEGIN 
    Insert into JCTxLines (ID, JobID, iSource) Values(3696,2,3) 
    FETCH NEXT FROM icursor INTO 
END 
CLOSE icursor 
DEALLOCATE icursor 

Vous pouvez même faire SELECT DISTINCT INSÉRÉ

Questions connexes