Marque C,se a proposição é verdadeira; E,se a proposição é f...
A execução apresentada do script deflagrará a execução da trigger trg_01,construída em PL/SQL, que é demonstrada a seguir.
update tabela_a
set coluna_a = ‘X’
where coluna_b = ‘Y’;
create trigger trg_01
before delete on tabela_a
begin
insert into tabela_b values (‘W’, ‘K’);
end;
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - Errado
No contexto da questão, estamos lidando com gatilhos, ou triggers, que são procedimentos armazenados que são automaticamente executados ou "disparados" quando certos eventos ocorrem em uma tabela. No SQL padrão e no PL/SQL, que é o SQL procedural da Oracle, os gatilhos podem ser definidos para operações como INSERT, UPDATE e DELETE.
O script apresentado na questão executa um UPDATE na tabela_a, modificando o valor da coluna_a para 'X', onde coluna_b é igual a 'Y'. Entretanto, o gatilho trg_01 está configurado para ser disparado antes de uma operação de DELETE na tabela_a, conforme indicado pela cláusula before delete on tabela_a. Isso significa que o gatilho não será ativado pela operação de UPDATE realizada no script.
Para que o gatilho trg_01 fosse acionado pela operação apresentada, ele deveria estar configurado como um gatilho de UPDATE, com uma cláusula semelhante a before update on tabela_a. Como não é esse o caso, a execução do UPDATE não irá desencadear o gatilho, e a afirmativa é falsa.
Além disso, é importante notar que a sintaxe create trigger é utilizada para a criação de um gatilho e não para a sua execução. A questão pode levar a alguma confusão ao apresentar o script de criação do gatilho após a operação de UPDATE, mas essa ordenação não influencia a execução do gatilho, pois ele precisa ter sido criado e estar ativo na base de dados antes de qualquer operação que o deflagraria.
Portanto, o conhecimento de como os gatilhos são acionados em função de operações específicas na base de dados é essencial para responder a esta questão corretamente. O entendimento claro das cláusulas que definem o momento de ativação do gatilho, como before ou after e a operação associada, como insert, update, ou delete, é crucial na administração de gatilhos em um ambiente de banco de dados.
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
Acredito que o erro está na na linha insert into tabela_b values (‘W’, ‘K’);
o correto seria insert into tabela_b (coluna_a, coluna_b) values (‘W’, ‘K’);
Na verdade, o erro é o seguinte:
O Trigger em questão só será executado antes de algum comando DELETE na tabela_a → before delete on tabela_a.
Porém o script inicial faz um UPDATE na tabela_a → update tabela_a set coluna_a = ‘X’ where coluna_b = ‘Y’.
Ou seja, o Trigger não será deflagrado (disparado), pois não existiu um evento necessário para sua execução.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo