Pour permettre la bonne exécution de certaines instructions il est parfois nécessaire de désactiver un trigger de base de données de façon temporaire.
Pour réaliser cette opération SQL Server propose l'instruction suivante:
ALTER TABLE laTable DISABLE TRIGGER leTrigger;
L'activation est alors possible par la commande:
ALTER TABLE laTable ENABLE TRIGGER leTrigger;
Si ces instructions fonctionnent bien elles presentent quelques incovénients:
Si les 2 premiers points sont contraignants, il est quand même relativement facile de réaliser l'opération de désactivation, par contre pour le dernier point rien ne permet de rendre automatique l'activation des déclencheurs désactivés.
Pour échapper à cette problématique il est préférable de faire appel à Context_Info. La valeur de cette variable est définie au niveau de chaque session. Il suffit alors depuis le déclencheur d'éxaminer la valeur de Context_Info afin de décider des opérations à effectuer.
Le plus simple est d'illustrer par un exemple. Soit le déclencheur suivant
Il est alors possible de définir la valeur de Context_Info au niveau de chaque session comme l'illustre l'exemple suivant