Triggers em Mysql

Olá!

Nesta dica rápida irei explicar como criar Triggers (Gatilhos), basicamente as Triggers são comandos/procedimento que são executados quando acontece um evento como Inserir, Atualizar ou Apagar (INSERT, UPDATE e DELETE) no banco de dados, elas podem ser executadas no tempo, antes (BEFORE) ou depois (AFTER) do evento.

Antes de continuar o assunto sobre triggers… terei que explicar o delimitador do código.
A primeira coisa que precisamos entender é que o “;” ponto e virgula é usado para finalizar as declarações/comandos (statement) no mysql. Para permitir que o delimitador ‘;’ seja usado no corpo da trigger sem ser interpretado pelo mysql enquanto é passado para o servidor. Devemos alterar o delimitador usando o comando DELIMITER antes da definição do trigger e finalizar o delimitador logo após. Todas as triggers são associadas a uma tabela. Observe o exemplo seguir:

A sintaxe é simples:

DELIMITER $$
 
CREATE TRIGGER  nome_gatilho tempo_gatilho evento_gatilho ON nome_da_tabela
FOR EACH ROW BEGIN
– Comandos SQL Ex.:
INSERT INTO tb_logs(log) VALUES("Bruno Nascimento");
END;
$$
DELIMITER ;

Você pode usar os apelidos (aliases) OLD e NEW para recuperar valores da tabela que com a trigger associada.

Observe que se o evento for:

INSERT permitirá usar NEW.campo_com_tabela_trigger
DELETE permitirá usar OLD.campo_tabela_com_trigger
UPDATE permitirá ambos. (OLD e NEW).

Exemplo

DELIMITER $$
 
CREATE TRIGGER  tg_logs BEFORE DELETE ON produtos
FOR EACH ROW BEGIN
INSERT INTO tb_logs(nome) VALUES(OLD.nome);
END;
$$
DELIMITER ;

Visualizar todas as triggers

SHOW TRIGGERS

Para deletar a trigger:

DROP TRIGGER nome_gatilho

Basicamente é isso. Veja mais detalhes na documentação:

http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

Talvez na próxima dica, eu fale sobre PROCEDURES e FUNCTIONS.

Deixe seu comentário, dúvida, crítica e sugestão.

Pensando bem… acredito que essa diga fique melhor em uma vídeo aula? O que vocês acham?

Abraços é até a próxima.

[ad]

2 ideias sobre “Triggers em Mysql

  1. Eu concordo com a video aula rs.
    Está muito legal esse site, Parabéns!
    Pena que eu não sou tão geek para sair testando todas as suas dicas rsrs mas vale muito estar antenada 🙂
    Bjk

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *