0% acharam este documento útil (0 voto)
35 visualizações2 páginas

### Motivação para o Uso de Trigger

Enviado por

deborabf
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
35 visualizações2 páginas

### Motivação para o Uso de Trigger

Enviado por

deborabf
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 2

### **Motivação para o Uso de Triggers**

Os **triggers** são mecanismos que permitem executar ações automaticamente em


resposta a eventos como **inserções**, **atualizações** ou **deleções** em tabelas.
No contexto do projeto, os triggers garantem:
- **Integridade dos Dados:** Evitar valores inválidos ou inconsistentes.
- **Automação de Processos:** Capturar alterações ou realizar ações sem intervenção
manual.
- **Auditoria:** Rastrear mudanças importantes no banco de dados.

---

### **a) Trigger para Verificar Preço de Arma**

```sql
CREATE OR REPLACE FUNCTION verificar_preco_arma()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
IF NEW.Preco < 0 THEN
RAISE EXCEPTION 'O preço da arma não pode ser negativo.';
END IF;

RETURN NEW;
END;
$$;

CREATE TRIGGER trigger_verificar_preco_arma


BEFORE INSERT OR UPDATE ON Arma
FOR EACH ROW
EXECUTE FUNCTION verificar_preco_arma();
```

#### **Objetivo:**
- Evitar que armas sejam cadastradas ou atualizadas com valores de preço negativos.

#### **Funcionamento:**
1. Antes de **inserir** ou **atualizar** uma arma, o trigger verifica o valor do
campo `Preco`.
2. Caso o preço seja negativo, a operação é cancelada e uma exceção é levantada.

#### **Benefício:**
- **Integridade dos Dados:** Garante que o banco de dados nunca conterá informações
inválidas (preço negativo para armas).
- **Automação:** Elimina a necessidade de validações adicionais no lado da
aplicação.

---

### **b) Trigger para Log de Atualização de Ranking**

```sql
CREATE OR REPLACE FUNCTION log_atualizacao_ranking()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO Log_Ranking (ID_Jogador, Ranking_Antigo, Ranking_Novo,
Data_Atualizacao)
VALUES (OLD.ID_Jogador, OLD.Ranking, NEW.Ranking, NOW());

RETURN NEW;
END;
$$;

CREATE TRIGGER trigger_log_ranking


AFTER UPDATE OF Ranking ON Jogador
FOR EACH ROW
EXECUTE FUNCTION log_atualizacao_ranking();
```

#### **Objetivo:**
- Registrar todas as alterações no ranking de um jogador para fins de auditoria e
análise.

#### **Funcionamento:**
1. Sempre que o campo `Ranking` de um jogador for atualizado, o trigger é acionado.
2. Insere-se um registro na tabela `Log_Ranking` contendo:
- ID do jogador.
- Ranking antigo (`OLD.Ranking`).
- Novo ranking (`NEW.Ranking`).
- Data e hora da atualização (`NOW()`).

#### **Benefício:**
- **Auditoria:** Cria um histórico detalhado de todas as alterações de ranking,
facilitando análises e investigações futuras.
- **Transparência:** Fornece um registro confiável para identificar quando e por
quem alterações foram realizadas.

---

### **Por que criar Triggers no Projeto?**

1. **Validação Automática:**
- Triggers como o de preço de arma evitam erros antes mesmo que os dados sejam
inseridos no banco, garantindo maior confiabilidade.

2. **Histórico de Alterações:**
- Triggers como o de log de ranking ajudam a criar registros detalhados que
podem ser usados para auditoria e relatórios.

3. **Redução de Código na Aplicação:**


- Lógica que seria implementada no código do sistema é movida para o banco de
dados, promovendo centralização e menor risco de inconsistências.

4. **Ações em Tempo Real:**


- A execução automática de funções evita atrasos, garantindo que alterações
importantes sejam registradas no momento em que ocorrem.

---

Esses triggers desempenham um papel essencial na manutenção da integridade e


rastreabilidade do banco de dados, promovendo maior confiabilidade no gerenciamento
de dados relacionados ao jogo **Valorant**.

Você também pode gostar