Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2015

Banco de DadosSQL
Código
fc020559
Banca
FCC
Órgão
MPE-PB
Ano
2015
Nível
Superior
Cargo
Analista de Sistemas – Desenvolvedor
Para que, ao remover um registro da tabela Loja, todos os registros da tabela Filial relacionados a esta loja também sejam excluídos automaticamente, deve-se incluir, no comando CREATE TABLE da tabela
  1. ALoja, imediatamente após a instrução PRIMARY KEY(idLoja), a instrução ON DELETE CASCADE.
  2. BFilial, após a instrução PRIMARY KEY(idFilial, idLoja), a instrução ON DELETE.
  3. CFilial, imediatamente após a instrução REFERENCES Loja(idLoja), a instrução ON DELETE CASCADE.
  4. DLoja, após a instrução PRIMARY KEY(idLoja), a instrução DELETE CASCADE.
  5. EFilial, imediatamente após a instrução FOREIGN KEY(idLoja), a instrução ON DELETE CASCADE.
Revelar gabarito e comentário

GabaritoC — Filial, imediatamente após a instrução REFERENCES Loja(idLoja), a instrução ON DELETE CASCADE.

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”.

SQL: Remoção em Cascata com ON DELETE CASCADE

Gabarito: letra C. Para excluir automaticamente os registros da tabela Filial quando um registro da tabela Loja for removido, a cláusula ON DELETE CASCADE deve ser incluída na declaração da chave estrangeira da tabela Filial, imediatamente após a referência REFERENCES Loja(idLoja). Isso está de acordo com a sintaxe padrão SQL para integridade referencial.

A banca testa o conhecimento sobre a sintaxe correta das restrições de chave estrangeira. A regra é: a cláusula ON DELETE CASCADE (ou outras ações) deve ser colocada após a cláusula REFERENCES na definição da FOREIGN KEY da tabela filha (a que contém a chave estrangeira).

Alternativa A — ❌ Incorreta

A tabela Loja é a tabela pai (referenciada). A cláusula ON DELETE CASCADE não se coloca na tabela pai; ela deve ser definida na tabela filha (Filial) junto com a chave estrangeira. Além disso, a posição após PRIMARY KEY é inválida.

Alternativa B — ❌ Incorreta

Embora esteja na tabela correta (Filial), a posição está errada (após PRIMARY KEY) e, mais importante, está incompleta: o comando deve ser ON DELETE CASCADE, e não apenas ON DELETE. A cláusula ON DELETE sem ação explícita não é válida.

Alternativa C — ✅ Correta ⟵ GABARITO

Posiciona ON DELETE CASCADE imediatamente após a cláusula REFERENCES Loja(idLoja), que é a sintaxe correta. Exemplo:

FOREIGN KEY (idLoja) REFERENCES Loja(idLoja) ON DELETE CASCADE

Isso garante que, ao excluir uma loja, todas as suas filiais sejam automaticamente deletadas.

Alternativa D — ❌ Incorreta

DELETE CASCADE (sem ON) não é uma cláusula válida em SQL. Além disso, a tabela Loja é a tabela pai, e a cláusula não deve ser colocada ali. O correto é ON DELETE CASCADE na tabela filha.

Alternativa E — ❌ Incorreta

A posição após FOREIGN KEY(idLoja) e antes de REFERENCES está errada. A ordem correta na declaração é: FOREIGN KEY (coluna) REFERENCES tabela(coluna) ON DELETE CASCADE. A cláusula ON DELETE CASCADE deve vir depois do REFERENCES, não depois do FOREIGN KEY.

NÃO CAIA NESSA!

A banca explora a posição exata da cláusula ON DELETE CASCADE. Muitos candidatos sabem que deve estar na tabela filha, mas erram ao colocá-la imediatamente após FOREIGN KEY (alternativa E) ou após PRIMARY KEY (alternativa B). Lembre-se: a ordem é FOREIGN KEY … REFERENCES … ON DELETE CASCADE.

Gabarito: letra C.

Link permanente: /questoes/fc020559