web-dev-qa-db-fra.com

Existe-t-il un moyen de s'assurer qu'un déclencheur SQL Server sera exécuté?

Mon superviseur hésique à utiliser un déclencheur dans un processus car s'il existe une interruption de réseau au bon moment, le processus ne compléterait pas. SQL Server inclut-il la gâchette dans la transaction de la procédure d'appel? Sinon, quelle est la meilleure façon de mettre en œuvre cela?

9
Seth Delconte

Oui. Les déclencheurs se produisent comme une transaction imbriquée implicite dans le cadre de la transaction de l'appelant. Le déclencheur va commettre ou rouler dans le cadre de cette transaction.

Voir:

10
Tevo D

Il y a plusieurs situations lorsque les déclencheurs ne tirent pas, tels que:

  • Une table est tombée.

  • Une table est tronquée.

  • Les paramètres de déclencheurs imbriqués et/ou récursifs empêchent un déclencheur de la cuisson.

Donc, dans SQL Server, un déclencheur est [~ # ~] pas [~ # ~ ~] Garanti d'exécuter. Parfois, il peut être contourné.

De plus, une gâchette peut être juste incorrecte. De toute façon, vous pouvez vous retrouver avec des orphelins dans votre base de données.

Si vous postez ce que vous essayez d'accomplir votre déclencheur, nous pouvons peut-être vous aider à la mettre en œuvre avec des contraintes.

6
A-K