Uma trigger é um comando que o sistema executa automaticamen...
Considere:
create trigger tgr001 before update of concentra referencing new row as novaLinha for each row
when (novaLinha.nome_inst = ' ')
begin atomic
end;
Para que a trigger em SQL padrão acima substitua o valor em branco (' ') contido no campo nome_inst pelo valor nulo, deve-se completar com:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a E - set novaLinha.nome_inst = null;. Para compreender a resposta, é fundamental entender o funcionamento de triggers em um banco de dados. Um trigger é um procedimento que é acionado automaticamente em resposta a um evento específico em uma tabela, como inserção, atualização ou exclusão de registros.
O SQL padrão para a criação de um trigger utiliza a cláusula SET para atribuir um novo valor a uma coluna no contexto de uma operação de UPDATE ou INSERT. No caso apresentado, precisamos substituir um valor em branco na coluna nome_inst por um valor nulo (NULL) antes que a atualização seja efetivamente realizada no banco de dados.
A sintaxe correta dentro de um bloco de trigger para alterar o valor de uma coluna é usar a cláusula SET seguida pelo nome da coluna, o sinal de igual (=) e o novo valor a ser atribuído. No contexto da questão, novaLinha refere-se à nova linha que está sendo atualizada e nome_inst refere-se à coluna específica que precisa ter seu valor alterado para nulo se estiver em branco.
A opção E - set novaLinha.nome_inst = null; é correta porque segue precisamente essa sintaxe, indicando que o valor da coluna nome_inst na linha que está sofrendo a atualização deve ser substituído por NULL quando o gatilho for ativado pela condição especificada no WHEN.
As outras opções falham por utilizar palavras-chave ou sintaxe incorretas no contexto de triggers em SQL:
- replace não é usado desse modo em SQL para definir valores em uma coluna dentro de triggers.
- def e insert não são cláusulas apropriadas para atribuir valores a colunas em triggers.
Portanto, a cláusula SET é a única maneira correta de especificar a atribuição de um novo valor a uma coluna dentro do contexto de um trigger antes da operação de atualização ser concluída.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo