Questão nº 55
Questão de Administração de Banco de Dados · FGV MPAL 2018 (nº 55)
Considere o bloco de comandos Oracle a seguir.
```
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".
- A10 (alternativa correta)
- B10, 20, 30
- C10, NULL, NULL
- D10, 0, 0
- EErro de execução, pois o comando unused aplica-se somente às constraints de uma tabela.
Resposta comentada
Gabarito Alternativa A
O comando `ALTER TABLE ... SET UNUSED` no Oracle marca colunas como "não utilizadas", tornando-as logicamente removidas e inacessíveis para qualquer comando SQL, como `SELECT`, mesmo que seus dados ainda existam fisicamente até que sejam explicitamente descartados.
(A) Correta: O comando `ALTER TABLE x SET UNUSED (b, c);` marca as colunas `b` e `c` como não utilizadas. Isso significa que elas são logicamente removidas da tabela e não são mais visíveis ou acessíveis por consultas SQL. Consequentemente, `SELECT FROM x;` retorna apenas a coluna `a`, cujo valor é `10`.
(B) Incorreta: Esta seria a saída se as colunas `b` e `c` ainda estivessem ativas e acessíveis. O comando `SET UNUSED` as remove da visão lógica da tabela. Armadilha da banca: O distrator tenta fazer o aluno pensar que `SET UNUSED` não afeta a visibilidade dos dados, ou que é um comando inócuo para o `SELECT `, quando na verdade ele remove as colunas do escopo da consulta.
(C) Incorreta: O comando `SET UNUSED` não altera os valores das colunas para `NULL`; ele as remove da definição da tabela para fins de consulta. Se as colunas fossem `NULL`, elas ainda apareceriam no `SELECT *`.
(D) Incorreta: O comando `SET UNUSED` não redefine os valores das colunas para seus padrões (`0` neste caso); ele as torna inacessíveis. Os valores `20` e `30` foram inseridos explicitamente, sobrescrevendo os padrões.
(E) Incorreta: O comando `ALTER TABLE ... SET UNUSED (coluna)` é um comando SQL válido e amplamente utilizado no Oracle para marcar colunas como não utilizadas, sendo uma etapa para a remoção física posterior. Ele não se aplica apenas a `constraints`.
Fonte: FGV MPAL 2018 Analista do Ministério Público - Administrador de Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.