Não, eles são realmente uma boa ideia. Se houver um problema com seus gatilhos específicos, você não os fará corretamente, mas isso geralmente significa que há um problema com sua implementação, não o conceito de gatilhos :-).
Usamos muito os gatilhos, porque coloca a atividade específica do DBMS sob o controle do banco de dados ao qual ele pertence. Os usuários de um SGBD não precisam se preocupar com esse tipo de coisa. A integridade dos dados está no próprio banco de dados, não nos aplicativos ou usuários que os utilizam. Sem restrições, gatilhos e outros recursos no banco de dados, os aplicativos devem aplicar as regras e são necessários apenas um aplicativo / usuário não autorizado ou com bugs para destruir os dados.
Por exemplo, sem gatilhos, coisas maravilhosas como colunas geradas automaticamente não existiriam e você teria que processar uma função em cada linha ao selecioná-las. É provável que isso prejudique o desempenho do DBMS, muito melhor criar a coluna gerada automaticamente no momento da inserção / atualização, pois é a única vez que ela muda.
Além disso, a falta de acionadores impediria que as regras de dados fossem aplicadas no DBMS, como pré-acionadores, para garantir que as colunas tenham um formato específico. Observe que isso é diferente das regras de integridade de dados, que geralmente são apenas pesquisas de chave estrangeira.