Red de conocimiento informático - Material del sitio web - Cómo controlar la recursividad de los desencadenantes

Cómo controlar la recursividad de los desencadenantes

Los desencadenantes tienen dos métodos recursivos diferentes, recursividad directa y recursividad indirecta.

1. Recursividad directa

Cuando un disparador se activa y realiza una operación, la operación utiliza el mismo disparador para realizar la operación nuevamente, esto se llama recursividad directa.

Usando la recursividad directa de disparadores, al eliminar un registro en la tabla, todos los registros con el mismo número en la tabla se eliminan a través del disparador.

2. Recursividad indirecta

Cuando los datos de la Tabla 1 cambian, el disparador se activa y realiza una operación, que a su vez activa otro disparador de la Tabla 2. Este disparador en la Tabla 2 actualiza la Tabla 1, activando así nuevamente el disparador en la Tabla 1. Esto se llama recursividad indirecta.

Por ejemplo, una aplicación actualiza la tabla TA y activa trigger_a. Trigger_A actualiza la tabla TB, lo que activa Trigger_B. Trigger_B a su vez actualiza la tabla ta, de modo que Trigger_A se activa indirectamente de forma recursiva nuevamente.

Puede desactivar la recursividad directa utilizando el procedimiento almacenado del sistema sp_dboption, pero esto activa la recursividad indirecta. Para desactivar estos dos tipos de recursividad, utilice el procedimiento almacenado del sistema sp_configure.

Materiales de referencia:

Diccionario de programación de la serie Tomorrow - Diccionario de programación de SQL Server Edición de prueba