Questão nº 32
Questão de Banco de Dados · FCC TRT6 2025 (nº 32)
Em um banco de dados Oracle aberto e em condições ideais, o comando utilizado para adicionar uma coluna custas do tipo NUMBER(10,2) à tabela processo, estabelecendo uma restrição que impede que valores de custas menores ou iguais a 10000 sejam inseridos, é
- A`ADD COLUMN custas NUMBER(10,2) TO processo WHERE custas > 10000;`
- B`ALTER TABLE processo ADD custas NUMBER(10,2) CONSTRAINT processo_custas_ck CHECK (custas > 10000);` (alternativa correta)
- C`ADD COLUMN custas NUMBER(10,2) TO processo WITH CONSTRAINT processo_custas_ck CHECK (custas > 10000);`
- D`ALTER TABLE processo ADD custas NUMBER(10,2) ADD CONSTRAINT processo_custas_ck CHECK (custas >= 10000);`
- E`ALTER TABLE processo ADD custas NUMBER(10,2) CONSTRAINT processo_custas_ck WHERE (custas > 10000);`
Resposta comentada
Gabarito Alternativa B
Para modificar a estrutura de uma tabela já existente, como adicionar uma nova coluna, utilizamos o comando ALTER TABLE. Se quisermos que os dados de uma coluna sigam uma regra específica, adicionamos uma restrição (CONSTRAINT) do tipo CHECK, que verifica uma condição.
- (A) Incorreta: A sintaxe
ADD COLUMN ... TO processoestá errada; o comando correto começa comALTER TABLE. Além disso,WHEREnão é usado para definir restrições de coluna. - (B) Correta: Esta alternativa utiliza a sintaxe padrão do Oracle para adicionar uma coluna (
ALTER TABLE processo ADD custas NUMBER(10,2)) e, na mesma declaração, define uma restriçãoCHECKnomeada (CONSTRAINT processo_custas_ck CHECK (custas > 10000)) que impede valores menores ou iguais a 10000, conforme solicitado. - (C) Incorreta: A sintaxe
ADD COLUMN ... TO processoestá errada, eWITH CONSTRAINTnão é a palavra-chave correta para definir uma restriçãoCHECKneste contexto. - (D) Incorreta: Embora a estrutura inicial
ALTER TABLE processo ADD custas NUMBER(10,2)esteja correta eADD CONSTRAINTseja uma cláusula válida, a condição da restriçãoCHECK (custas >= 10000)está errada. A questão pede para impedir valores menores ou iguais a 10000, o que significa que os valores permitidos devem ser estritamente maiores que 10000 (custas > 10000). Esta é a armadilha da banca, trocando o operador de comparação>por>=. - (E) Incorreta: A sintaxe
WHERE (custas > 10000)está incorreta para definir a condição de uma restriçãoCHECK; o correto seriaCHECK (custas > 10000).
Fonte: FCC TRT6 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 005). Reproduzida para fins de estudo.