Triggers permitem que você execute uma função no banco de dados conforme certos eventos acontecem (por exemplo, uma inserção em uma tabela).
Não posso comentar especificamente sobre o mysql.
Precaução:Os gatilhos podem ser muito atraentes, quando você começa a usá-los, eles parecem uma bala mágica para todos os tipos de problemas. Mas, eles fazem coisas "mágicas" acontecerem, se você não conhece o banco de dados de dentro para fora, pode parecer que coisas realmente estranhas acontecem (como inserções em outras tabelas, alteração de dados de entrada, etc). Antes de implementar as coisas como um gatilho, eu consideraria seriamente impor o uso de uma API em torno do esquema (de preferência no banco de dados, mas fora, se você não puder).
Algumas coisas para as quais eu ainda usaria gatilhos
- Acompanhando os campos "date_created" e "date_last_edited"
- Inserindo "IDs" (no oracle, onde não há campo de id automático)
- Manter o histórico de alterações
Coisas para as quais você não gostaria de usar gatilhos
- regras/lógica de negócios
- qualquer coisa que se conecte fora do banco de dados (por exemplo, uma chamada de webservice)
- Controle de acesso
- Qualquer coisa que não seja transacional (qualquer coisa que você faça no gatilho DEVE ser capaz de reverter com a transação)