SóProvas


ID
2651434
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de sistemas gerenciadores de banco de dados (SGBD), julgue o próximo item.


Em um SGBD, o trigger pode substituir a instrução que o originou, sendo a instrução original descartada e apenas o trigger executado.

Alternativas
Comentários
  • Gabarito Certo

    Gatilho ou trigger é um recurso de programação executado sempre que o evento associado ocorrer. Trigger é um tipo especial de procedimento armazenado, que é executado sempre que há uma tentativa de modificar os dados de uma tabela que é protegida por ele.

    É muito utilizada para ajudar a manter a consistência dos dados ou para propagar alterações em um determinado dado de uma tabela para outras. Um bom exemplo é um gatilho criado para controle de quem alterou a tabela, nesse caso, quando a alteração for efetuada, o gatilho é "disparado" e grava em uma tabela de histórico de alteração, o usuário e data/hora da alteração.

    Em SQL, para se criar um trigger utiliza-se do CREATE TRIGGER, e para removê-lo deve-se usar DROP TRIGGER.

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • Ok, só faltou explicar o que o trigger faz para poder substituir a instrução que o originou ...

     

    Alguém?

  • O comando que origina o TRIGGER pode ser um INSERT, DELETE, UPDATE, SELECT, etc. O TRIGGER pode ser disparado antes ou depois de tais comandos originários, logo, se definido trigger antes da execução de tal comando SQL, ele pode sim executar um método que torne ineficaz o comando que o originou. Por exemplo: Se o administrador do banco de dados não permitir a exclusão de clientes de uma tabela, pode criar um TRIGGER que antes de execução do comando DELETE execute um método que não permita a exclusão, tornando o comando originário (DELETE) ineficaz.

  • Aqui vai um Videos da Bóson Treinamentos que ajuda a entender o que é um tigger...eu errei a questão e ainda não vi o video, então vou olhar depois volto para explicar caso entenda...

    https://www.youtube.com/watch?v=JOnkvqUaNOU

  • vish, o mulek q ia voltar pra explicar não veio, então ele não entendeu o video kkkkkk

  • kkkkkkkkkkkk

    O cara que ia voltar para explicar está mais pertido que nós estudando para PF.

  • Triggers são funções ligadas a tabelas que "vigiam" ações junto as mesmas. Eles podem ser configurados para agir antes BEFORE ou depois AFTER determinada ação. Em PostgreSQL por exemplo eles recebem um parametro chamado NEW em casos de Insert ou OLD em caso de DELETE ou UPDATE.

    Caso detectar que o comando não é "bem-vindo", o trigger pode retornar NEW ou OLD como NULL, ou levantando uma exceção RAISE EXCEPTION retornando uma mensagem de erro customizável, invalidando a ação.

    Desta forma, sendo a instrução original descartada e apenas o trigger executado.

  • Triggers são "gatilhos" que podem ser configurados em cada tabela de um BD. Essas funções "reagem" a operações que são executadas no banco de dados e podem Anular a própria operação caso seja necessário. Por exemplo: Você pode configurar um gatilho em uma tabela de ALUNOS que reage ao comando DELETE e verifica se este aluno está matriculado em algum curso ativo na tabela CURSOS. Caso ele esteja, você nega a operação de DELETE, retornando um erro.

  • Assertiva CORRETA.


    Um trigger pode ser executado em 3 momentos: antes, depois e no lugar de uma transação (before, after, instead of). Caso ele seja executado no lugar de uma transação, essa transação não será executada, somente o trigger. Por isso que a questão diz que a transação será descartada.


    "INSTEAD OF triggers fire before an insert, update, or delete operation. INSTEAD OF triggers replace the original operation. For example, if an INSTEAD OF DELETE trigger exists on a table, when a client deletes a record, the trigger code will fire and then control will return to the client. The server will not perform the original delete operation. INSTEAD OF triggers are useful when you want to modify the changes made by the client before actually posting the update operation."


  • Um trigger pode ser executado em 3 momentos: antes, depois e no lugar de uma transação (before, after, instead of).

    No caso da implantação INSTEAD OF (em vez disso) ocorre exatamente o que a questão cobrou, pois neste caso o trigger substitui a instrução que o originou, sendo a instrução original descartada e apenas o trigger executado, veja um exemplo: 

     

    No Trigger criado abaixo se irá capturar os valores informados no INSERT de uma view, e se substiuirá a instrução que o originou ( o próprio INSERT), vai descartar a instrução original e vai adicionar um .nextval da sequence an coluna primária.

    Exemplo:

    CREATE OR REPLACE TRIGGER trigger_seq

    INSTEAD OF INSERT

    ON teste_pk_vw

    FOR EACH ROW

    BEGIN

          INSERT INTO teste_pk

           VALUES(teste_pk_seq.NEXTVAL, :new.nome, :new.sobrenome);

    END trigge_sq;

    * Uma informação importante que pode ser cobrada em futuras questões: Esse tipo de trigger não pode ser utilizado em tabelas, mas apenas em views.

    Fonte: https://oraclepress.wordpress.com/2016/05/19/instead-of-triggers/

  • De modo simples, exemplo de uma trigger :

    Se você possui uma empresa com certo número de funcionários e automaticamente você deseja que o salários deles sejam alterados a cada período, aí você cria uma trigger que irá fazer isso automaticamente, sendo assim, essa trigger com o salário base desses funcionários modificará o salários deles de acordo com o valor que você colocou na trigger.

    Basicamente é isso...

     

     

    GABARITO: CORRETO.

  • Famoso "gatilho".

  • Podemos definir o momento que o trigger será executado: BEFORE ou AFTER.

    Ou podemos definir que o trigger será executado em substituição ao evento que o originou usando INSTEAD OF.

    Exemplo:

    CREATE TRIGGER trigger_1 ON db.table_1 INSTEAD OF INSERT ...

    No lugar de INSTEAD OF poderíamos ter BEFORE ou AFTER.

    Todo mundo explicou o que é trigger mas esqueceram de mencionar o que a banca quis referenciar.

  • Marquei como: E

    Resultado: Errei

  • O trigger pode ser descrito

    de três formas distintas em relação ao momento que o código deve ser

    executado: BEFORE, AFTER e INSTEAD OF. Esse último permite que a instrução

    seja executada em substituição a instrução original.

  • ACHEI UM BOM EXEMPLO NA DEVMEDIA:

    Para exemplificar o uso de gatilhos (TRIGGERS), tomaremos como cenário uma certa aplicação financeira que contém um controle de caixa e efetua vendas. Sempre que forem registradas ou excluídas vendas, essas operações devem ser automaticamente refletidas na tabela de caixa, aumentando ou reduzindo o saldo.

  • Um gatilho ou trigger é um bloco de comandos Transact-SQL que é automaticamente executado quando um comando INSERT, DELETE ou UPDATE for executado em uma tabela do banco de dados. São usados para realizar tarefas relacionadas com validações, restrições de acesso, rotinas de segurança e consistência de dados; desta forma estes controles deixam de ser executados pela aplicação e passam a ser executados pelos triggers em determinadas situações, como:

    • mecanismos de validação envolvendo múltiplas tabelas;

    • criação de conteúdo de uma coluna derivada de outras colunas da tabela;

    • realização de análises e atualizações em outras tabelas com base em alterações e/ou inclusões da tabela atual.

    Fonte: PDF Gran