Trigger Flashcards

(46 cards)

1
Q

Quais são os tipos de execução de uma trigger?

A

As triggers podem ser executadas antes ou depois dos eventos que as disparam.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que é uma TRIGGER em SQL?

A

Um objeto de banco de dados que executa automaticamente um bloco de código SQL em resposta a certos eventos em uma tabela (ex: INSERT, UPDATE, DELETE).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qual a sintaxe básica para criar uma TRIGGER que executa após a inserção de dados na tabela ITENS_NOTAS?

A

CREATE TRIGGER TG_TAB_FATURAMENTO
AFTER INSERT ON ITENS_NOTAS
BEGIN
– Comandos SQL aqui
END;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual a finalidade do BEGIN e END em uma TRIGGER?

A

Delimitar o bloco de código SQL que será executado quando a TRIGGER for acionada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qual é a função da linha CREATE TRIGGER TG_TAB_FATURAMENTO?

A

Cria um novo gatilho (TRIGGER) no banco de dados e o nomeia como TG_TAB_FATURAMENTO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

O que significa AFTER INSERT ON ITENS_NOTAS?

A

Especifica que a TRIGGER será executada automaticamente após cada operação de inserção de dados na tabela ITENS_NOTAS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

O que faz o comando DELETE FROM TAB_FATURAMENTO; dentro da TRIGGER?

A

Remove todos os registros existentes da tabela TAB_FATURAMENTO. Isso garante que a tabela seja atualizada com os dados mais recentes, evitando duplicações ou informações desatualizadas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Explique o propósito do comando INSERT INTO TAB_FATURAMENTO … SELECT … dentro da TRIGGER.

A

Insere novos registros na tabela TAB_FATURAMENTO, calculando o faturamento a partir das tabelas NOTAS e ITENS_NOTAS. A consulta SELECT calcula o faturamento para cada data de venda, somando o produto da quantidade pelo preço dos itens.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Qual a função da cláusula INNER JOIN ITENS_NOTAS ITN ON N.NUMERO = ITN.NUMERO na consulta SELECT?

A

Combina os registros das tabelas NOTAS (apelidada de N) e ITENS_NOTAS (apelidada de ITN) com base na correspondência dos números das notas fiscais. Isso permite relacionar as informações da nota fiscal com os itens vendidos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que faz a cláusula GROUP BY N.DATA_VENDA na consulta SELECT?

A

Agrupa os resultados da consulta por data de venda (N.DATA_VENDA). Isso permite calcular o faturamento total para cada dia, somando as vendas de todos os itens vendidos naquela data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quais são os benefícios de usar TRIGGERS em um banco de dados?

A

Automatização: Executam tarefas automaticamente em resposta a eventos.
Consistência: Garantem a consistência dos dados, aplicando regras automaticamente.
Centralização: Centralizam a lógica de negócios no banco de dados.
Auditoria: Podem ser usadas para rastrear mudanças nos dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Quais são os tipos de TRIGGERS com base no tempo de execução?

A

BEFORE: Executada antes do evento (INSERT, UPDATE, DELETE).
AFTER: Executada após o evento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quais são os eventos que podem disparar uma TRIGGER?

A

INSERT (inserção de dados)
UPDATE (atualização de dados)
DELETE (exclusão de dados)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Como as TRIGGERS podem afetar o desempenho do banco de dados?

A

TRIGGERS mal projetadas podem causar lentidão nas operações de banco de dados, pois são executadas automaticamente. É importante otimizar o código dentro da TRIGGER e evitar operações complexas desnecessárias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Em quais situações pode ser preferível usar outros mecanismos em vez de TRIGGERS?

A

Lógica na Aplicação: Quando a lógica pode ser implementada diretamente na aplicação, evitando a sobrecarga do banco de dados.
Jobs Agendados: Para tarefas de manutenção que não precisam ser executadas em tempo real.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

No contexto da aula, qual problema a TRIGGER TG_TAB_FATURAMENTO resolve?

A

Garante que a tabela TAB_FATURAMENTO seja automaticamente atualizada sempre que novos dados são inseridos nas tabelas NOTAS e ITENS_NOTAS, mantendo o relatório de faturamento sempre atualizado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Por que a TRIGGER primeiro deleta todos os dados da TAB_FATURAMENTO antes de inserir os novos dados?

A

Para garantir que não haja dados duplicados ou desatualizados na tabela. A exclusão completa e reinserção garante que a tabela reflita o estado mais recente das vendas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Qual comando utilizamos para modificar a TRIGGER existente, em vez de apagá-la e criar uma nova?

A

CREATE OR REPLACE TRIGGER.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Quais condições foram adicionadas na definição da TRIGGER para que ela seja executada também em operações de UPDATE e DELETE?

A

OR UPDATE OR DELETE após o AFTER INSERT.

20
Q

Por que é importante que a TRIGGER seja executada em operações de UPDATE e DELETE?

A

Para garantir que a tabela de faturamento esteja sempre atualizada e correta, refletindo as alterações e exclusões de itens de notas fiscais.

21
Q

O que são DDL Triggers no Oracle SQL?

A

São gatilhos que disparam automaticamente quando comandos DDL (como CREATE, ALTER, DROP) são executados no banco de dados.

22
Q

Em que momento um Trigger DDL pode ser executado?

A

Pode ser executado BEFORE ou AFTER um evento DDL, como CREATE, ALTER, DROP, etc

23
Q

O que são Triggers DML?

A

São gatilhos que executam automaticamente um bloco PL/SQL após ou antes de comandos DML como INSERT, UPDATE ou DELETE.

24
Q

Quais os tipos de eventos que disparam Triggers DML?

A

INSERT, UPDATE, DELETE.

25
Em que momentos uma Trigger DML pode ser executada?
BEFORE: antes da execução do DML AFTER: depois da execução do DML INSTEAD OF: usado apenas em views, substitui a execução do DML
26
Qual a estrutura básica de uma Trigger DML?
CREATE OR REPLACE TRIGGER nome_trigger BEFORE INSERT OR UPDATE OR DELETE ON nome_tabela FOR EACH ROW BEGIN -- ações END;
27
O que significa FOR EACH ROW?
Indica que a trigger será executada uma vez para cada linha afetada pela operação.
28
Como acessar os valores antigos e novos dentro de uma Trigger DML?
:OLD.coluna: valor antes da modificação :NEW.coluna: valor após a modificação
29
Quando usar INSTEAD OF em Triggers DML?
Quando se deseja permitir modificações (INSERT, UPDATE, DELETE) em views que não são diretamente modificáveis.
30
O que são Row-level Triggers (Triggers de Linha)?
São triggers que executam uma vez para cada linha afetada por uma instrução DML (INSERT, UPDATE ou DELETE).
31
Qual cláusula define uma Trigger como Row-level?
A cláusula FOR EACH ROW.
32
O que é possível acessar em uma Trigger de Linha?
:OLD.coluna: valor da linha antes da operação :NEW.coluna: valor da linha depois da operação
33
Em quais momentos uma Trigger de Linha pode ser disparada?
BEFORE INSERT, BEFORE UPDATE, BEFORE DELETE AFTER INSERT, AFTER UPDATE, AFTER DELETE
34
Qual diferença entre Row-level e Statement-level Triggers?
Row-level: executa para cada linha afetada (FOR EACH ROW) Statement-level: executa uma vez por comando DML, sem FOR EACH ROW
35
Pode-se usar :OLD em um INSERT?
Não. :OLD não existe em INSERT, pois a linha ainda não existia
36
Pode-se usar :NEW em um DELETE?
Não. :NEW não existe em DELETE, pois a linha está sendo removida.
37
É possível modificar :NEW.coluna em uma trigger BEFORE INSERT ou BEFORE UPDATE?
Sim. É possível ajustar os valores antes de serem salvos no banco.
38
O que são Statement-level Triggers (Triggers de Nível de Declaração)?
São triggers que executam apenas uma vez por instrução DML, independentemente do número de linhas afetadas.
39
Como indicar que uma trigger é Statement-level?
Não utilizar a cláusula FOR EACH ROW.
40
É possível usar :OLD e :NEW em Statement-level Triggers?
Não. :OLD e :NEW só estão disponíveis em Row-level Triggers.
41
Quando usar uma Statement-level Trigger?
Quando a lógica deve ser aplicada independentemente de quais ou quantas linhas foram afetadas. Ex: gerar logs, manter estatísticas, chamar procedures.
42
Statement-level Trigger pode ser combinada com DDL ou DCL?
Não diretamente. Para eventos de DDL (como CREATE, ALTER), utiliza-se DDL Triggers, que são diferentes.
43
O que ocorre se 0 linhas forem afetadas por um UPDATE? A trigger de declaração será executada?
Sim. A trigger será executada sempre que o comando for executado, mesmo que nenhuma linha seja modificada.
44
Qual comando remove (deleta) uma trigger em Oracle SQL?
DROP TRIGGER nome_da_trigger;
45
É necessário saber se a trigger está ativada ou desativada para removê-la?
Não. O comando DROP TRIGGER remove a trigger independentemente do seu status (ativa ou desativada).
46
O que acontece ao executar DROP TRIGGER?
A trigger é permanentemente removida do banco de dados. Não é possível desfazer, a menos que você tenha backup.