Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sschonss/triggers
Essa é uma pequena documentação sobre triggers, que é um assunto que eu não conhecia muito bem, mas que me ajudou bastante no meu trabalho. Espero que possa ajudar mais pessoas que estão começando a trabalhar com banco de dados.
https://github.com/sschonss/triggers
Last synced: 26 days ago
JSON representation
Essa é uma pequena documentação sobre triggers, que é um assunto que eu não conhecia muito bem, mas que me ajudou bastante no meu trabalho. Espero que possa ajudar mais pessoas que estão começando a trabalhar com banco de dados.
- Host: GitHub
- URL: https://github.com/sschonss/triggers
- Owner: sschonss
- Created: 2023-01-02T23:45:30.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-02T23:46:09.000Z (about 2 years ago)
- Last Synced: 2024-11-13T02:13:37.879Z (3 months ago)
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Triggers
### O que é, para que serve, quando e como usar?
---
```
Essa é uma pequena documentação sobre triggers, que é um assunto que eu não conhecia muito bem, mas que me ajudou bastante no meu trabalho.Espero que possa ajudar mais pessoas que estão começando a trabalhar com banco de dados.
```
---## O que é uma trigger?
Com o passar do tempo, as aplicações foram ficando mais complexas e com isso, a necessidade de automatizar tarefas que antes eram feitas manualmente, aumentou. Para isso, surgiram as triggers, que são funções que são executadas automaticamente quando uma ação é realizada no banco de dados.
Trigger em português significa gatilho, e é exatamente isso que ela faz, ela é acionada quando um evento acontece no banco de dados.
Tendo como exemplo um banco de dados de uma loja, podemos ter uma trigger que é acionada quando um produto é inserido no banco de dados, e que faz com que o estoque seja atualizado automaticamente.
## Para que serve?
As triggers são muito úteis para automatizar tarefas que são realizadas com frequência, e que podem ser feitas de forma mais rápida e eficiente com o uso de triggers.
Como dito anteriormente, podemos ter uma trigger que atualiza o estoque de um produto quando ele é inserido no banco de dados, ou uma trigger que atualiza um log de alterações quando um registro é alterado.
Existem diversas outras aplicações para as triggers, e é importante que você entenda como elas funcionam para que possa utilizá-las da melhor forma possível.
## Como uma trigger funciona?
Uma trigger é composta por três partes:
* **Evento:** é o evento que aciona a trigger, como por exemplo, a inserção de um registro em uma tabela.
* **Momento:** é o momento em que a trigger é executada, como por exemplo, antes ou depois da ação que acionou a trigger.
* **Ação:** é a ação que a trigger executa, como por exemplo, atualizar um registro em outra tabela.
Para ficar mais claro, vamos ver um exemplo de uma trigger que atualiza o estoque de um produto quando ele é inserido no banco de dados.
```sql
CREATE TRIGGER trigger_name AFTER INSERT ON table_name FOR EACH ROW
BEGIN
UPDATE product SET stock = stock + 1 WHERE id = NEW.id;
END;
```
Nesse exemplo, temos uma trigger chamada trigger_name, que é executada depois que um registro é inserido na tabela table_name, e que atualiza o estoque do produto que foi inserido.
Esse é um exemplo bem simples, mas que mostra como uma trigger funciona.
Vamos separar cada parte da trigger para entender melhor como ela funciona.
### Evento
O evento é o que aciona a trigger, e é definido na cláusula ON.
```sql
ON table_name
```
Nesse exemplo, a trigger é acionada quando um registro é inserido na tabela table_name.
### Momento
O momento é o momento em que a trigger é executada, e é definido na cláusula AFTER.
```sql
AFTER INSERT
```
Nesse exemplo, a trigger é executada depois que um registro é inserido na tabela table_name.
Existem outros momentos que podem ser utilizados, como por exemplo, BEFORE, que é executado antes da ação que acionou a trigger.
### Ação
A ação é a ação que a trigger executa, e é definida no bloco BEGIN e END.
```sql
BEGIN
UPDATE product SET stock = stock + 1 WHERE id = NEW.id;
END;
```
Nesse exemplo, a trigger atualiza o estoque do produto que foi inserido na tabela table_name.
### FOR EACH ROW
A cláusula FOR EACH ROW é utilizada para que a trigger seja executada para cada registro que é inserido na tabela.
```sql
FOR EACH ROW
```
Nesse exemplo, a trigger é executada para cada registro que é inserido na tabela table_name.
### OLD e NEW
As variáveis OLD e NEW são utilizadas para acessar os dados do registro que está sendo inserido na tabela.
```sql
UPDATE product SET stock = stock + 1 WHERE id = NEW.id;
```
Nesse exemplo, a trigger atualiza o estoque do produto que está sendo inserido na tabela table_name.
A variável OLD é utilizada para acessar os dados do registro que está sendo alterado, e a variável NEW é utilizada para acessar os dados do registro que está sendo inserido.
## Tipos de trigger
Existem dois tipos de trigger, que são:
* **Trigger de DML:** são triggers que são executadas quando uma ação de DML é realizada no banco de dados, como por exemplo, a inserção de um registro em uma tabela.
* **Trigger de DDL:** são triggers que são executadas quando uma ação de DDL é realizada no banco de dados, como por exemplo, a criação de uma tabela.
## Perfomance
Uma das coisas que você deve ter em mente ao utilizar triggers é a performance, pois elas podem afetar a performance do banco de dados.
Isso acontece porque as triggers são executadas sempre que um evento é acionado, e isso pode ser um problema se o evento for acionado com frequência.
Um exemplo de uma situação em que isso pode acontecer é quando você tem uma tabela de log de alterações, e que toda vez que um registro é alterado, uma trigger é executada para inserir um registro na tabela de log.
Existem algumas formas de melhorar a performance das triggers, como por exemplo, utilizar o momento BEFORE, que é executado antes da ação que acionou a trigger, e que pode ser mais rápido que o momento AFTER, mas isso depende muito do que a trigger faz.
Outra forma de melhorar a performance é utilizar a cláusula FOR EACH ROW, que faz com que a trigger seja executada para cada registro que é afetado pela ação que acionou a trigger, e não uma única vez para todos os registros.
## Conclusão
Espero que esse artigo tenha ajudado você a entender melhor o que são triggers, e como elas funcionam.
Caso você tenha alguma dúvida, deixe um comentário que eu responderei o mais rápido possível.
Qualquer correção ou sugestão, deixe também nos comentários.