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
ALoja, imediatamente após a instrução PRIMARY KEY(idLoja), a instrução ON DELETE CASCADE.
BFilial, após a instrução PRIMARY KEY(idFilial, idLoja), a instrução ON DELETE.
CFilial, imediatamente após a instrução REFERENCES Loja(idLoja), a instrução ON DELETE CASCADE.
DLoja, após a instrução PRIMARY KEY(idLoja), a instrução DELETE CASCADE.
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 CASCADEimediatamente 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.