Auditor de Controle Interno - Área 2 (Ciências da Computação)
Considere os seguintes comandos SQL foram executados em um SGBD relacional com restrição de integridade referencial, em um banco de dados vazio, para criar tabelas:CREATE TABLE Setor (idSetor INT PRIMARY KEY, nomeSetorVARCHAR(50));CREATE TABLE Funcionario (idFunc INT PRIMARY KEY, nomeVARCHAR(255),setor INT, FOREIGN KEY (setor) REFERENCES Setor(idSetor));O que acontece ao tentar remover uma tupla na tabela setor, caso exista uma tupla na tabela Funcionário cujo valor da coluna setor seja igual ao atributo idSetor, que foi removido?
AA tupla também será removida na tabela funcionário.
BO campo setor será preenchido como nulo.
CO campo setor será atualizado para o valor default.
DNão é possível remover a tupla, uma vez que ela é referenciada por outra tabela.
Revelar gabarito e comentário▾
GabaritoD — Não é possível remover a tupla, uma vez que ela é referenciada por outra tabela.
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 e exclusão de registros pai
Gabarito: letra D. A ausência de cláusula ON DELETE na definição da chave estrangeira faz o SGBD adotar o comportamento padrão de rejeitar a exclusão (NO ACTION/RESTRICT), impedindo a remoção de um registro da tabela Setor enquanto existirem tuplas em Funcionario que o referenciem. É exatamente o que a alternativa D afirma.
A questão testa o comportamento default da restrição de integridade referencial em SQL. Quando uma FOREIGN KEY é criada sem especificar ON DELETE ou ON UPDATE, o padrão do SQL é NO ACTION (ou RESTRICT, dependendo do SGBD), que impede operações que violariam a referência. Conforme explicado no material de apoio, "não podemos deletar um registro da tabela mãe que tenha filhos em outras tabelas... retornando erro quando um comando de DELETE ou UPDATE quebra tal regra".
Vamos analisar cada alternativa:
Alternativa A — ❌ Incorreta
Afirma que a tupla também será removida na tabela funcionário. Isso só ocorreria se a FK tivesse a cláusula ON DELETE CASCADE, que não foi declarada. Sem ela, o SGBD não propaga a exclusão automaticamente.
Alternativa B — ❌ Incorreta
Diz que o campo setor será preenchido como nulo. Esse comportamento exige a cláusula ON DELETE SET NULL, que não está presente. Além disso, a coluna setor foi definida como INT (não explicitamente NOT NULL, mas a ausência de SET NULL impede a alteração automática).
Alternativa C — ❌ Incorreta
Afirma que o campo será atualizado para o valor default. Isso demandaria ON DELETE SET DEFAULT, também não especificado. Ademais, nem toda coluna possui um valor default definido.
Alternativa D — ✅ Correta ⟵ GABARITO
A operação de DELETE na tabela Setor será rejeitada pelo SGBD, pois viola a integridade referencial. O comando retorna um erro e a tupla não é removida. É o comportamento padrão quando não há cláusula ON DELETE explícita.
NÃO CAIA NESSA!
A banca explora a confusão entre os comportamentos possíveis (CASCADE, SET NULL, SET DEFAULT) e o padrão. O candidato pode lembrar que "existem opções" e achar que alguma é automática, mas a regra é que, sem especificação, a exclusão é bloqueada. Memorize: a ausência de ON DELETE equivale a NO ACTION (rejeição).
Gabarito: letra D — a exclusão não é permitida enquanto houver registros filhos referenciando a chave estrangeira.