Questão de Banco de Dados — Oracle — FCC 2016
- Código
- fc028433
- Banca
- FCC
- Órgão
- CREMESP
- Ano
- 2016
- Nível
- Superior
- Cargo
- Analista de Tecnologia da Informação - Banco de Dados
- AII e IV.
- BI e III.
- CI, II e IV.
- DIII e IV.
- EII e III.
GabaritoC — I, II e IV.
Gabarito: letra C — estão corretos os itens I, II e IV. Apenas o item III é falso, pois triggers de linha (FOR EACH ROW) são disparados para cada linha afetada, e não disparam se nenhuma linha for modificada, ao contrário do que afirma o enunciado.
No Oracle 11g, é possível criar um trigger com status DISABLED (desativado) e posteriormente ativá-lo com o comando ALTER TRIGGER ... ENABLE. A compilação ocorre no momento da criação; se for bem-sucedida, o trigger pode ser ativado quando necessário.
Triggers são executados automaticamente (implicitamente) pelo Oracle quando o evento de trigger ocorre, independentemente do usuário conectado ou da aplicação em uso.
O trigger de linha (FOR EACH ROW) é disparado para cada linha afetada pela instrução DML. Se nenhuma linha for afetada, ele não é disparado. O comportamento de disparar uma vez independentemente de linhas é do trigger de statement (nível de comando), não do trigger de linha.
O Oracle suporta triggers para eventos DDL, como CREATE, ALTER e DROP. Eles podem ser definidos no nível de banco de dados ou de esquema.
O item III inverte a característica do trigger de linha com o trigger de statement. Lembre-se: FOR EACH ROW dispara por linha; sem linhas afetadas, nenhum disparo. Já o trigger de statement dispara uma única vez, mesmo que zero linhas sejam modificadas.
Gabarito: letra C — itens I, II e IV corretos.
Link permanente: /questoes/fc028433