2011-07-30 3 views
0

Je travaille sur une solution où les triggers sql sont appelés de manière imbriquée, je vais vous expliquer le problème plus tard, laissez-moi d'abord vous présenter les tables en premier.Problème de Trigger imbriqué

  1. BillDetails
  2. SubProductAtLocation

Oui, c'est un erp conçu pour un magasin de détail, du projet de loi tableau se composent de factures rows articles

billDetails

  1. RowID
  2. BillID
  3. SubProductID
  4. MRP
  5. quantité
  6. impôt
  7. Discount

subproductLocation

  1. rowid
  2. SubproductID
  3. LocationID
  4. Quantité
  5. ProductID

**now** Il y a un déclencheur qui court après BillDetails d'insertion, dont la fonction est de déduire la quantité de SubProductAtLocation, encore plus il y a des déclencheurs après insertion, mise à jour dans subproductAtLocation, qui écrit le journal d'audit.

**Problem** Je ne voudrais pas que subproductAtLocation déclenche à exécuter si elle est appelée en raison de la mise à jour fait par billdetails déclencheur, d'habitude je peux désactiver les déclencheurs temporairement ou peut sp_configure 'nested triggers' n mais ne peut pas le faire en tant que serveur SQL est partagé et y parvenir est ni possible ni permis.

**Possible Solution** 

Si je peux stocker une valeur de drapeau où certains qui contrôle par subproductatLocation Triggers et peut rollback transaction si l'indicateur est réglé. Ce drapeau peut être effacé dans la dernière ligne de BillDetails Trigger.

Veuillez pardonner ma mauvaise connaissance Merci

Répondre

0

si vous mettez le « drapeau » dans la deuxième table, puis définissez que sur une valeur « spéciale » que pendant l'insert déclenchée, le second déclencheur aurait juste un si vous cochez de ne pas écrire le journal si cette valeur a été définie ...

+0

est logique, probablement un champ de bits. –