Considere o bloco de comandos Oracle a seguir. create ...
create table x(a int, b int default 0, c int default 0); insert into x values (10,20,30); alter table x set unused (b, c) ; select * from x;
Assinale o que é produzido pelo comando “select".
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta correta: A - 10
O tema dessa questão está relacionado ao gerenciamento de colunas em uma tabela no banco de dados Oracle, especificamente sobre a funcionalidade de marcar colunas como UNUSED. Para resolver essa questão, é importante compreender o que ocorre quando utilizamos o comando ALTER TABLE
com a opção SET UNUSED
para determinadas colunas.
O comando ALTER TABLE ... SET UNUSED
é utilizado para marcar uma ou mais colunas de uma tabela como não usadas. Isso não remove imediatamente os dados dessas colunas, mas informa ao Oracle que essas colunas poderão ser removidas posteriormente. Essa ação é útil para adiar a remoção física de colunas e os possíveis impactos de desempenho associados à operação, permitindo que a exclusão ocorra em um momento mais conveniente para a manutenção do banco de dados.
Após marcar as colunas como UNUSED, qualquer tentativa de consulta a essas colunas resultará em um erro, pois, do ponto de vista do usuário, elas não existem mais. No entanto, o restante da tabela, incluindo outras colunas que não foram marcadas, continua acessível e inalterado.
Ao executar o comando SELECT * FROM x
após as colunas b
e c
terem sido marcadas como UNUSED, apenas os dados da coluna a
serão exibidos, visto que as colunas b
e c
não estão mais disponíveis para consulta. Portanto, o resultado será simplesmente o valor presente na coluna a
, que neste caso é 10.
Logo, a alternativa correta é a A - 10, pois reflete o estado final da tabela, onde apenas os dados da coluna que está disponível (a
) são retornados na consulta.
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
A opção alter table ... set unused no comando Alter table é uma espécie de deleção lógica das colunas.
Em termos práticos, ela "esconde" as colunas da tabela.
Indicado para quando temos uma tabela com uma quantidade absurda de registros e não queremos fazer a exclusão das colunas com a opção alter table ... drop column, pois tende a ser uma operação bem mais demorada.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo