Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação
Considere que em um banco de dados PostgreSQL 13, aberto e funcionando em condições ideais, existam duas tabelas: Cidades (com os campos NomeCidade e Estado) e Populacao (com os campos Cidade, NumHabitantes, NumVaras). A tabela Cidades foi criada pelo comando:
CREATE TABLE Cidades (NomeCidade VARCHAR(80) PRIMARY KEY, Estado VARCHAR(40));
Para que, ao se inserir ou atualizar algum registro na tabela Populacao, seja verificado se o campo Cidade corresponde a uma cidade existente na tabela Cidades, deve-se utilizar uma chave estrangeira. Isso é feito utilizando o comando SQL na criação da tabela Populacao:
EREFERENCES FOREIGN KEY (Cidade) TO Cidades(NomeCidade)
Revelar gabarito e comentário▾
GabaritoC — REFERENCES Cidades(NomeCidade)
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
PostgreSQL: Criação de chave estrangeira no CREATE TABLE
Gabarito: letra C. No PostgreSQL, a sintaxe para definir uma chave estrangeira diretamente na coluna é REFERENCES tabela(coluna), dispensando a palavra FOREIGN KEY. As demais alternativas apresentam erros de sintaxe ou redundância.
A questão testa o conhecimento da sintaxe SQL padrão (e do PostgreSQL) para definir uma restrição de integridade referencial no momento da criação da tabela. Quando a chave estrangeira é definida na própria coluna, a forma correta é:
coluna tipo REFERENCES tabela_referenciada(coluna_referenciada)
Se a definição for feita como uma constraint separada (após as colunas), a sintaxe seria:
FOREIGN KEY (Cidade) REFERENCES Cidades(NomeCidade) — essa é a sintaxe de uma constraint separada, não pode ser colocada diretamente na declaração da coluna. Se inserida na lacuna, resultaria em erro de sintaxe.
Alternativa B — ❌ Incorreta
FOREIGN KEY REFERENCES Cidades(NomeCidade) — falta especificar a coluna local ((Cidade)). Além disso, está usando a palavra FOREIGN KEY indevidamente no contexto de coluna.
Alternativa C — ✅ Correta ⟵ GABARITO
REFERENCES Cidades(NomeCidade) — sintaxe exata para definir uma chave estrangeira na própria coluna. O PostgreSQL (e a maioria dos SGBDs relacionais) aceita essa forma inline.
Alternativa D — ❌ Incorreta
FOREIGN KEY Cidades(NomeCidade) — falta a palavra REFERENCES e a coluna local. Não é uma construção SQL válida.
Alternativa E — ❌ Incorreta
REFERENCES FOREIGN KEY (Cidade) TO Cidades(NomeCidade) — palavras-chave na ordem errada e uso de TO (que não faz parte da sintaxe padrão). Totalmente inválida.
PEGA ESSA DICA!
Decore as duas formas de declarar chave estrangeira:
Inline (na coluna):coluna tipo REFERENCES tabela(coluna)
Constraint (após as colunas):[CONSTRAINT nome] FOREIGN KEY (coluna) REFERENCES tabela(coluna)
A FCC costuma cobrar a forma inline nas questões de CREATE TABLE.