Esta es una pregunta más general, pero la motivación para esta pregunta fue un problema que enfrenté al usar SQL Server.
Tengo este desencadenante adjunto a un evento Insertar en una tabla que contiene cierta lógica que, como efecto secundario, generaría un error si no se insertaran filas. Tras una investigación adicional, descubrí que el gatillo estaba disparando a pesar de que no se insertaron filas.
El lenguaje utilizado en Microsoft Docs en DML Triggers parece contradecir este comportamiento:
Los activadores DML son un tipo especial de procedimiento almacenado que surte efecto automáticamente cuando se produce un evento DML que afecta la tabla o vista definida en el activador.
¿Es este un comportamiento predeterminado en los DBMS? ¿Hay alguna razón particular para disparar un disparador cuando no hay filas afectadas?
fuente