Apoio Especializado - Tecnologia da Informação - Desenvolvimento de Sistemas
Considere um esquema relacional criado com o seguinte script SQL.Para evitar a introdução de erros de integridade na tabela E2 decorrentes da remoção de registros da tabela E1, a cláusula complementar na definição da chave estrangeira seria:
Ano action;
Bon delete cascade;
Con delete raiserror;
Don delete restrict;
Eset null.
Revelar gabarito e comentário▾
GabaritoB — 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”.
Integridade referencial: ações de exclusão em chaves estrangeiras
Gabarito: letra B. Para evitar erros de integridade na tabela E2 quando um registro de E1 é removido, a cláusula correta é ON DELETE CASCADE, que propaga a exclusão: ao apagar o registro-pai, os registros-filhos que referenciam aquela chave também são apagados automaticamente. Essa é a ação que garante que não fiquem referências órfãs na tabela filha.
A integridade referencial é a regra que garante que um valor de chave estrangeira em uma tabela sempre corresponda a um valor de chave primária (ou candidata) existente em outra tabela. Quando você tenta excluir um registro da tabela-pai (E1) que ainda é referenciado por registros da tabela-filha (E2), o banco precisa decidir o que fazer — e é exatamente isso que as cláusulas complementares da FOREIGN KEY controlam. Sem nenhuma ação definida, o banco aplica o comportamento padrão, que é o NO ACTION (ou RESTRICT, dependendo do SGBD): a exclusão é simplesmente bloqueada, gerando um erro de violação de integridade referencial.
O ON DELETE CASCADE resolve esse impasse de forma automática: em vez de bloquear a exclusão, ele a propaga. Se E1 é a tabela de países e E2 a de estados, excluir um país faz com que todos os seus estados sejam excluídos junto. É a solução mais comum quando o relacionamento é de dependência existencial — o registro filho só faz sentido se o pai existir. O ON DELETE SET NULL é a alternativa para relacionamentos opcionais: ao excluir o pai, a coluna da chave estrangeira nos filhos é preenchida com NULL, preservando os registros filhos, mas desvinculando-os. Já o RESTRICT e o NO ACTION são variações do mesmo princípio de bloqueio — a diferença entre eles é sutil e depende do momento em que a verificação ocorre dentro da transação.
A pegadinha desta questão está em reconhecer que o objetivo declarado é "evitar a introdução de erros de integridade" — ou seja, o banco deve impedir que fiquem registros órfãos. Tanto o CASCADE quanto o SET NULL e o RESTRICT evitam o erro, mas cada um com uma estratégia diferente. A alternativa C (on delete raiserror) nem sequer existe na sintaxe SQL padrão — é um termo do Transact-SQL do SQL Server usado em triggers, não em definição de chave estrangeira. A banca explora exatamente essa confusão entre os mecanismos de bloqueio e os de propagação.
Guarde a distinção central: bloquear (NO ACTION/RESTRICT) impede a exclusão do pai; propagar (CASCADE) exclui os filhos junto; desvincular (SET NULL) mantém os filhos, mas anula a referência. É nessa tríade que as alternativas se dividem.
Critério
NO ACTION / RESTRICT (A/D)
ON DELETE CASCADE (B)
ON DELETE SET NULL (E)
Efeito na exclusão do pai
Bloqueia a exclusão se houver filhos
Exclui os filhos junto com o pai
Mantém os filhos, mas anula a FK
Resultado nos registros-filhos
Nenhuma alteração (exclusão não ocorre)
Registros filhos são removidos
FK fica com valor NULL
Requisito na coluna FK
Nenhum requisito especial
Nenhum requisito especial
Coluna deve aceitar NULL
Uso típico
Relacionamento obrigatório, sem propagação
Dependência existencial (filho só existe com o pai)
Relacionamento opcional
Evita erro de integridade?
Sim, por bloqueio
Sim, por propagação
Sim, por desvinculação
Alternativa A — ❌ Incorreta
NO ACTION é o comportamento padrão: a exclusão do registro-pai é bloqueada se houver registros filhos referenciando-o. Isso evita o erro de integridade, mas não é o que a questão pede — o enunciado fala em "evitar a introdução de erros" de forma genérica, e a banca quer a ação que propaga a exclusão, não a que a impede. A pegadinha: NO ACTION evita o erro, mas por bloqueio, não por propagação.
Alternativa B — ✅ Correta ⟵ GABARITO
ON DELETE CASCADE propaga a exclusão: ao remover um registro de E1, todos os registros de E2 cuja chave estrangeira referencia aquele registro são removidos automaticamente. Isso elimina a possibilidade de referências órfãs e, portanto, evita erros de integridade referencial. É a ação mais comum para relacionamentos de dependência existencial (1:N obrigatória).
Alternativa C — ❌ Incorreta
ON DELETE RAISERRORnão existe na sintaxe SQL padrão para definição de chaves estrangeiras. RAISERROR é um comando do Transact-SQL (SQL Server) usado para gerar mensagens de erro em blocos de programação, não uma ação de integridade referencial. A banca mistura conceitos de linguagens diferentes para confundir.
Alternativa D — ❌ Incorreta
ON DELETE RESTRICT bloqueia a exclusão do registro-pai se houver filhos referenciando-o, gerando um erro de violação. Assim como o NO ACTION, ele impede a exclusão em vez de propagá-la. A diferença entre RESTRICT e NO ACTION é sutil (o RESTRICT verifica imediatamente; o NO ACTION pode adiar a verificação até o fim da transação em alguns SGBDs), mas ambos são ações de bloqueio, não de propagação.
Alternativa E — ❌ Incorreta
ON DELETE SET NULL desvincula os registros filhos: ao excluir o pai, a coluna da chave estrangeira nos filhos é preenchida com NULL. Isso preserva os registros filhos, mas exige que a coluna da chave estrangeira seja anulável (não definida como NOT NULL). É adequado para relacionamentos opcionais, mas não é o que a questão pede — o objetivo é evitar erros de integridade, e o SET NULL só funciona se a coluna aceitar NULL; além disso, a banca quer a propagação da exclusão, não a anulação.
Gabarito: letra B — ON DELETE CASCADE é a cláusula que propaga a exclusão do registro-pai para os registros-filhos, evitando referências órfãs e, consequentemente, erros de integridade referencial.