Essa é uma pergunta mais geral, mas a motivação para essa pergunta foi um problema que eu enfrentei ao usar o SQL Server.
Eu tenho esse gatilho anexado a um evento Insert em uma tabela que contém alguma lógica que, como efeito colateral, geraria erro se nenhuma linha fosse inserida. Após uma investigação mais aprofundada, descobri que o gatilho estava disparando, apesar de nenhuma linha ser inserida.
A linguagem usada no Microsoft Docs on DML Triggers parece contradizer esse comportamento:
Os gatilhos DML são um tipo especial de procedimento armazenado que entra em vigor automaticamente quando ocorre um evento DML que afeta a tabela ou exibição definida no gatilho.
Esse é um comportamento padrão nos DBMSs? Existe um motivo específico para disparar um gatilho quando nenhuma linha é afetada?
fonte