O que é e como usar trigger em SQL

O que é e como usar trigger em SQL
Philemon Delva
Philemon Delva

Compartilhe

Quando estamos trabalhando com bancos de dados relacionais geralmente temos a necessidade de realizar uma determinada ação de acordo com algum evento que acontecer, tipo um INSERT, UPDATE, DELETE, e é isso que o Trigger nos possibilita no SQL.

O que é e como usar Trigger em SQL

Um Trigger é um procedimento armazenado no banco de dados que é chamado automaticamente sempre que ocorre um evento especial no banco de dados. Por exemplo, um acionador pode ser chamado quando uma linha é inserida em uma tabela especificada ou quando determinadas colunas da tabela estão sendo atualizadas.

Geralmente essas ações que acionam os triggers são alterações nas tabelas por meio de operações de inserção, exclusão e atualização de dados (insert, delete e update).

Banner da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

Existem duas classes de Triggers no SQL

Triggers DDL (Data Definition Language): Essa classe de Triggers é acionada em eventos que alteram a estrutura (como criar, modificar ou soltar uma tabela) ou em determinados eventos relacionados ao servidor, como alterações de segurança ou atualização de eventos estatísticos.

Triggers DML (Data Modification Language): Esta é a classe de Triggers mais usada. Nesse caso, o evento de disparo é uma declaração de modificação de dados; poderia ser uma instrução de inserção, atualização ou exclusão em uma tabela ou em uma exibição.

Os Triggers DML têm tipos diferentes

FOR ou AFTER [INSERT, UPDATE, DELETE]: Esses tipos de Triggers são executados após o término da instrução de disparo (inserção, atualização ou exclusão).

INSTEAD OF [INSERT, UPDATE, DELETE]: Ao contrário do tipo FOR (AFTER), os Triggers INSTEAD OF são executados em vez da instrução de disparo. Em outras palavras, esse tipo de trigger substitui a instrução de disparo. Isso é muito útil nos casos em que você precisa ter integridade referencial entre bancos de dados.

As vantagens do Trigger

  • Gerar alguns valores de coluna derivados automaticamente;
  • Aplicar a integridade referencial;
  • Registro de eventos e armazenamento de informações no acesso à tabela;
  • Auditoria;
  • Replicação síncrona de tabelas;
  • Imposição de autorizações de segurança;
  • Impedir transações inválidas.

Como usar Trigger em SQL

A instrução CREATE TRIGGER permite criar um novo trigger que é acionado automaticamente sempre que um evento como INSERT, DELETE ou UPDATE ocorre em uma tabela.

A sintaxe da instrução CREATE TRIGGER:

CREATE  TRIGGER  [Nome_Trigger] // é o nome definido pelo usuário para o novo trigger
ON  [Nome_tabela] // é a tabela à qual o trigger se aplica.
AFTER {[INSERT],[UPDATE],[DELETE]} 
[NOT  FOR  REPLICATION] // A opção instrui o SQL Server a não acionar o gatilho quando a modificação de dados for feita como parte de um processo de replicação.
AS
{sql_statements}

A sintaxe acima é genérica, mas é a base para grande parte dos bancos de dados, como veremos a seguir.

Exemplo de Triggers no Oracle

A Oracle também forneceu a facilidade de mencionar o evento no qual o trigger precisa ser acionado e o momento da execução.

Um trigger é um bloco nomeado PL/SQL (linguagem para desenvolvimento de programas que dentro do servidor de banco de dados Oracle) armazenado no banco de dados Oracle e executado automaticamente quando um evento de trigger ocorre.

No Oracle, você pode definir procedimentos que são implicitamente executados quando uma instrução INSERT, UPDATE ou DELETE é emitida na tabela associada. Esses procedimentos são chamados de triggers de banco de dados.

Existem seis instruções CREATE TRIGGER de acordo com seus pontos de disparo.

CREATE  [OR  REPLACE]  TRIGGER  trigger_name
{BEFORE  |  AFTER  }  triggering_event  ON  table_name
[FOR  EACH  ROW]
[FOLLOWS  |  PRECEDES  another_trigger]
[ENABLE  /  DISABLE  ]
[WHEN  condition]
DECLARE
declaration  statements
BEGIN
executable  statements
EXCEPTION
exception_handling  statements
END;

Se você não incluir as palavras-chave OR REPLACE, receberá uma mensagem de erro indicando que o nome do seu gatilho já foi usado por outro objeto.

Exemplo de Triggers no MySQL

O Trigger no MySQL é um objeto de banco de dados associado a uma tabela. Será ativado quando uma ação definida for executada para a tabela. O trigger pode ser executado quando você executa uma das seguintes instruções do MySQL na tabela: INSERT, UPDATE e DELETE e pode ser chamada antes ou depois do evento.

delimiter //
CREATE TRIGGER nome_Trigger
AFTER INSERT ON usuario_voto
FOR EACH ROW
BEGIN
Aqui você coloca a estrutura do trigger.
END //
delimiter ;

Comandos comuns

Para remover um Trigger podemos utilizar o comando: DROP TRIGGER nome_Trigger;

Para visualizar todos os Triggers podemos utilizar o comando: SHOW TRIGGERS;

Conclusão

Vimos que os Triggers no SQL são bem úteis quando precisamos disparar eventos de forma automática quando acontecer algum evento que seja importante para nós, como um INSERT em uma tabela de juros, assim os valores de outras tabelas deveriam ser alterados, e podemos fazer isso automaticamente com os Triggers.

Gostou do artigo e quer saber mais sobre SQL, Triggers? Aqui na Alura temos a Formação de SQL com MySQL Server da Oracle que vai te ensinar como usar Triggers e muito mais.

Veja outros artigos sobre Data Science