¿Hay alguna manera de garantizar que se ejecute un disparador de servidor SQL?

dba.stackexchange https://dba.stackexchange.com/questions/10167

  •  16-10-2019
  •  | 
  •  

Pregunta

Mi supervisor duda en usar un desencadenante en un proceso porque si hay una interrupción de la red en el momento justo, el proceso no se completará. ¿SQL Server incluye el desencadenante en la transacción del procedimiento de llamadas? Si no, ¿cuál es la mejor manera de implementar esto?

¿Fue útil?

Solución

Sí. Los desencadenantes ocurren como una transacción anidada implícita dentro del alcance de la transacción de la persona que llama. El disparador se comprometerá o retrocedirá como parte de esta transacción.

Ver:

Otros consejos

Hay bastantes situaciones en las que los desencadenantes no disparan, como:

  • Se deja caer una mesa.

  • Una mesa está truncada.

  • La configuración para desencadenantes anidados y/o recursivos evita que un gatillo se dispare.

Entonces, en SQL Server, un disparador es NO garantizado para ejecutar. A veces se puede pasar por alto.

Además, un desencadenante puede ser simplemente incorrecto. De cualquier manera, puede terminar con huérfanos en su base de datos.

Si publica lo que está tratando de lograr con su desencadenante, tal vez podamos ayudarlo a implementarlo con limitaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top