1917

Criando triggers de banco de dados

Fala Dev's tudo jóia?

Vamos falar um pouco de banco de dados, mas espeficicamente de TRIGGERS ("gatilhos" em português) são objetos do banco de dados que, relacionados a certa tabela, permitem a realização de processamentos em consequência de uma determinada ação como, por exemplo, a inserção de um registro. Os triggers podem ser executados ANTES ou DEPOIS das operações de INSERT, UPDATE e DELETE de registros.

Algumas vantagens de se utilizar triggers:
  • Regra de negócio concentrada no banco de dados;
  • Processamento rápido;
  • Criar blocos de rotinas que podem ser disparados antes ou depois de uma modificação.
Opções para utilizar as triggers:
  • Before insert (Antes de inserir);
  • After insert (Depois de inserir);
  • Before update (Antes de atualizar);
  • After update (Depois de atualizar);
  • Before delete (Antes de apagar);
  • After delete (Depois de apagar).
Os registros NEW e OLD:

Como os triggers, são executados em conjunto com operações de inclusão e exclusão, é necessário poder acessar os registros que estão sendo incluídos ou removidos. Isso pode ser feito através das palavras NEW e OLD.

Em gatilhos executados após a inserção de registros, a palavra reservada NEW dá acesso ao novo registro. Pode-se acessar as colunas da tabela como atributo do registro NEW, como veremos nos exemplos.

O operador OLD funciona de forma semelhante, porém em gatilhos que são executados com a exclusão de dados, o OLD dá acesso ao registro que está sendo removido.

Para nosso teste vamos simular duas tabelas, uma de aluno e outra de matriculas.

CREATE TABLE `tb_aluno` (
`aluno_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`aluno_nome` VARCHAR(50) NOT NULL,
`curso_id` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`aluno_id`)
);
CREATE TABLE `tb_matricula` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`aluno_id` INT(11) UNSIGNED NOT NULL,
`curso_id` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`id`)
);

Onde ao inserir um novo aluno a trigger será disparada a automaticamente será inserido um registro na tabela tb_matricula.

estrutura basica para a criação de triggers:

DELIMITER $$
CREATE TRIGGER nome-da-trigger AFTER INSERT ON tabela-que-inicia-a-trigger
FOR EACH ROW BEGIN
    //aqui vai o código sql
END $$
DELIMITER ;

para testar o nosso exemplo termos o seguinte código:

DELIMITER $$
  CREATE TRIGGER tg_matricula AFTER INSERT ON tb_aluno 
    FOR EACH ROW BEGIN
    INSERT INTO tb_matricula VALUES (NEW.aluno_id, NEW.curso_id);
END$$
DELIMITER ;
INSERT INTO tb_aluno (aluno_nome, curso_id) VALUES ('Nome do Aluno',30);

Ufa! Foi um tutorial rápido, mas bem interessante, pois trabalhamos com um recurso avançado do MySQL, mas claro, através de um exemplo bem simples. O importante é que você tenha entendido o propósito de uma Trigger e como ela pode ser utilizada.

Sendo assim, agora é contigo! Você pode criar Triggers muito mais complexas, mas isso pede um conhecimento mais avançado sobre SQL, nos próximos post iremos aprofundar mas esse tema com operações mas complexas.

Bom, gostou do tutorial? Deixe seu comentário ou então compartilhe com os amigos pra gente espalhar o conhecimento. Até a próxima!