Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESGRANRIO 2008

Banco de DadosSQL
Código
cg027247
Banca
CESGRANRIO
Órgão
BNDES
Ano
2008
Nível
Superior
Cargo
Profissional Básico - Análise de Sistemas - Desenvolvimento
Um funcionário, encarregado de verificar o correto funcionamento de uma base de dados relacional, faz o seguinte teste:select nome from emp where matr = 123;O resultado é vazio. Então ele executa:insert into emp(matr, nome, salario, ativo)values (123, 'José da Silva', 2000, 'N');commit;O banco de dados não retorna erro e informa que inseriu uma linha.Por fim, para verificar, ele consulta novamente:select nome from emp where matr = 123;O resultado continua vazio.Supondo que o sistema gerenciador de banco de dados esteja funcionando corretamente, que opção explica o ocorrido?
  1. AComo o funcionário executou o primeiro SELECT momentos antes de executar o INSERT, o resultado ficou na memória cache do computador e não foi executado pelo banco de dados na segunda vez. Somente após o protocolo LRU ter retirado do cache o resultado do SELECT é que ele será novamente executado.
  2. BComo "emp" é uma visão e uma visão é nada menos que uma consulta gravada no banco de dados, nunca é possível usá-la em operações de manipulação de dados. O COMMIT ignora a inserção anterior.
  3. C"emp" é uma visão que retorna todos os empregados ativos (ativo='S'), mas foi criada sem a expressão WITH CHECK OPTION, que evitaria o problema acima.
  4. D"emp" não é uma tabela, mas uma visão que retorna todos os empregados ativos (ativo='S') e foi criada com a expressão WITH CHECK OPTION. Dessa forma, como o empregado José da Silva não está ativo, o banco de dados não gravou o registro no momento do COMMIT.
  5. EO funcionário executou o SELECT pouco tempo após a inserção do registro. Mesmo finalizando a transação com o COMMIT, o registro está em memória e ainda não foi gravado no disco. Somente após o CHECKPOINT é que o registro estará disponível para consulta.
Revelar gabarito e comentário

GabaritoC — "emp" é uma visão que retorna todos os empregados ativos (ativo='S'), mas foi criada sem a expressão WITH CHECK OPTION, que evitaria o problema acima.

Link permanente: /questoes/cg027247