Em PL/SQL é INCORRETO afirmar que triggers são executados ...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: D - invocados explicitamente pelo usuário.
Vamos explorar o conceito de triggers no contexto de PL/SQL e entender o porquê da alternativa D ser a correta. Triggers são procedimentos armazenados que são automaticamente executados, ou "disparados", em resposta a certos eventos no banco de dados. Eles são muito úteis para manter a integridade dos dados, realizar auditoria e muitas outras funções automáticas que são essenciais para a administração do banco de dados.
As alternativas A, B, C e E descrevem situações em que os triggers são utilizados:
- A: Operações de DML (Data Manipulation Language) como INSERT, UPDATE e DELETE podem acionar triggers.
- B: Operações de DDL (Data Definition Language) como CREATE e ALTER também podem acionar triggers, embora sejam menos comuns do que os triggers de DML.
- C: Triggers podem ser configurados para serem executados quando erros de servidor ocorrem, como uma forma de capturar e tratar exceções.
- E: Eventos de Login/Logoff do usuário igualmente podem ser monitorados por triggers, que podem ser usados para realizar ações de auditoria ou controle de acesso.
Entretanto, a alternativa D é incorreta. Os triggers não são invocados explicitamente pelos usuários, mas sim são disparados automaticamente pelo sistema de gerenciamento do banco de dados em resposta a um evento específico que foi definido no trigger. Isso é o que os diferencia de procedimentos armazenados regulares, que são executados mediante chamada explícita.
Portanto, compreender a natureza automática e o gatilho de execução dos triggers é essencial para entender como eles funcionam e são utilizados dentro de sistemas de banco de dados como o Oracle Database utilizando PL/SQL.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Como as triggers estão sempre associadas a algum evento, os comandos BEFORE e AFTER informam se a trigger será disparada antes ou depois da ocorrência do evento.
Os eventos mais comuns que disparam uma trigger são comandos DML como INSERT, UPDATE ou DELETE.
http://www.java2s.com/Tutorial/Oracle/0560__Trigger/Triggers.htm
as instruções DML só podem ser executadas em tabelas (AFTER/BEFORE) ou VIEWS (INSTEAD OF) e como ambas são "schema objects" a letra A está perfeita.
Triggers podem ser executas sim devido a operações DDL, está na própria referência da oracle:
You can write triggers that fire whenever one of the following operations occurs:
1. DML statements (INSERT, UPDATE, DELETE) on a particular table or view, issued
by any user
2. DDL statements (CREATE or ALTER primarily) issued either by a particular
schema/user or by any schema/user in the database
3. Database events, such as logon/logoff, errors, or startup/shutdown, also issued
either by a particular schema/user or by any schema/user in the database
Referência: Oracle Database Concepts 10gR2.
A) Todo mundo sabe que esta é a principal função dos TRIGGERS.
B) Quem disse que um TRIGGER não pode ser acionado por uma DDL? E quanto o catálogo de dados do SGBD? Quando você usa uma DDL, o SGBD utiliza uma DML para alterar o catálogo de dados e com isso fica claro que um TRIGGER pode ser acionado por uma DDL.
C) Da mesma forma, ao ocorrer um erro no servidor, o catálogo de dados é atualizado podendo ou não um TRIGGER ser disparado.
D) Nunca, nem aqui, nem em marte, você pode chamar um TRIGGER explicitamente!
E) Vide alternativas B e C.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo