SóProvas


ID
377617
Banca
FCC
Órgão
TRE-AP
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

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

Alternativas
Comentários
  • 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.

  • Já resolvi 2x essa questão e insisto em marcar a letra C). Para mim parece totalmente sem sentido, pois só me vem a cabeça um falha de hardware. Acho que ficou muito vago o termo "erros de servidor". 

    Gabarito letra d)