Em PL/SQL é INCORRETO afirmar que triggers são executados ...

Próximas questões
Com base no mesmo assunto
Ano: 2011 Banca: FCC Órgão: TRE-AP Prova: FCC - 2011 - TRE-AP - Programador de computador |
Q125870 Banco de Dados
Em PL/SQL é INCORRETO afirmar que triggers são executados quando
Alternativas

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

Triggers são executadas quando há, necessariamente, a ocorrência de algum evento. A invocação explicita por parte do usuário não caracteriza um evento no banco de dados.
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
Resumindo: A principal diferença entre triggers (gatilhos) e stored procedures (procedimentos) é que os gatilhos são implícitos (são executados dado o acontecimento de um evento) e procedimentos são explícitos (a chamada ao procedimento ocorre de fato). 
Marquei letra B, pois DDL não são permitidas em PL/SQL. Mas concordo que a letra D também está incorreta.
A FCC colocou duas pegadinhas nessa questão, na letra A (para quem tem um conhecimento um pouco maior em triggers) e na letra B. Agora como sempre facilitou a vida do candidato colocando um coisa absurda na letra D.

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