Criação de constraints UNIQUE no Oracle
Gabarito: letra D. A sintaxe correta para uma restrição UNIQUE em nível de tabela no Oracle, após a palavra-chave CONSTRAINT, é: nome_da_restricao UNIQUE (coluna1, coluna2). A alternativa D reproduz exatamente esse padrão: matricula_unica UNIQUE (NroMatricula, NomeFunc). As demais alternativas erram a ordem dos elementos, usam operadores incorretos ou separam as colunas em constraints individuais.
A banca testa o conhecimento da sintaxe SQL do Oracle para definição de restrições de unicidade compostas. A forma correta de criar uma constraint UNIQUE nomeada em uma tabela é:
Oracle SQL (CREATE TABLE): CONSTRAINT nome UNIQUE (coluna1, coluna2, ...)
No enunciado, a lacuna I está logo após a palavra CONSTRAINT, portanto deve ser preenchida com o nome da restrição seguido da cláusula UNIQUE e a lista de colunas entre parênteses.
Alternativa A — ❌ Incorreta
UNIQUE matricula_unica (NroMatricula, NomeFunc) Inverte a ordem: coloca UNIQUE antes do nome da constraint. A ordem correta é: nome da constraint, depois UNIQUE, depois as colunas.
Alternativa B — ❌ Incorreta
matricula_unica UNIQUE (NroMatricula AND NomeFunc) Usa o operador lógico AND para separar as colunas, o que é inválido em SQL. As colunas devem ser separadas por vírgula.
Alternativa C — ❌ Incorreta
UNIQUE (NroMatricula, NomeFunc) AS matricula_unica Usa a palavra AS para nomear a constraint, o que não é aceito. Além disso, UNIQUE vem antes dos parênteses, mas o nome deveria vir antes de UNIQUE.
Alternativa D — ✅ Correta ⟵ GABARITO
matricula_unica UNIQUE (NroMatricula, NomeFunc) Respeita a sintaxe: nome da constraint, UNIQUE, colunas entre parênteses separadas por vírgula. Cria uma única restrição de unicidade composta pelas duas colunas.
Alternativa E — ❌ Incorreta
matricula_unica UNIQUE (NroMatricula) UNIQUE (NomeFunc) Cria duas restrições UNIQUE separadas, uma para cada coluna. Isso permite que NroMatricula e NomeFunc sejam repetidos individualmente, desde que a combinação não seja exclusiva; o objetivo do enunciado é uma única restrição que torne o par (NroMatricula, NomeFunc) único.
Gabarito: letra D