Criando Triggers no MySQL
15 Jan 2016Triggers ou gatilhos é um recurso bastante interessante presente na maioria dos SGBDs pois permite que comandos SQL sejam executados antes ou depois de operações como INSERT, UPDATE e DELETE.
No exemplo de hoje, vamos imaginar que possuímos uma tabela chamada registros, cujos campos serão: id, nome, alteracoes.
O campo alteracoes irá conter o número de edições que o registro sofreu, ou seja, será incrementado a cada UPDATE. Para criar um gatilho que faça a atualização do campo alteracoes será necessário executar o seguinte comando:
DELIMITER #
CREATE TRIGGER
registros.atualizar_alteracoes
BEFORE UPDATE ON registros
FOR EACH ROW BEGIN
SET NEW.alteracoes = NEW.alteracoes + 1;
END#
No comando acima, estamos informando que antes (BEFORE) de cada UPDATE na tabela registros o campo alteracoes deverá ser incrementado. Também seria possível definir que o gatilho fosse executado após o comando SQL, para isto, seria necessário utilizar a palavra AFTER ao invés de BEFORE.
Agora é só realizar alguns UPDATES e ver o campo alteracoes ser incrementado. Para mais detalhes sobre o uso de gatilhos, consulte a documentação oficial do MySQL sobre triggers.
Para excluir um gatilho, utilize:
DROP TRIGGER
registros.atualizar_alteracoes``
Até a próxima 😉