Questão nº 52

Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 52)

FGV2024Analista Judiciário - TI - Desenvolvimento de SistemasTecnologia da Informação
Gabarito: Bver comentário ↓

Considere um esquema relacional criado com o seguinte script SQL.

```
create table E1(
a int not null primary key,
b int not null)
create table E2(
c int not null,
d int not null
foreign key references E1(a))
```

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:

Resposta comentada

Gabarito Alternativa B

A integridade referencial é um conjunto de regras que garantem que os relacionamentos entre tabelas em um banco de dados sejam válidos, ou seja, que uma chave estrangeira (FK) sempre referencie uma chave primária (PK) existente ou seja nula. A cláusula ON DELETE define o que acontece com os registros filhos quando o registro pai correspondente é excluído.

  • (A) Incorreta: ON DELETE NO ACTION impede a exclusão do registro pai se houver registros filhos referenciando-o, a menos que a exclusão dos filhos seja feita explicitamente antes. Isso evita o erro, mas não é o comportamento de "cascata" implícito na resposta.
  • (B) Correta: ON DELETE CASCADE significa que, se um registro da tabela pai (E1) for excluído, todos os registros correspondentes na tabela filha (E2) que o referenciam também serão automaticamente excluídos. Isso evita a introdução de erros de integridade, pois não haverá registros filhos "órfãos" apontando para um pai inexistente.
  • (C) Incorreta: ON DELETE RAISERROR não é uma cláusula SQL padrão para chaves estrangeiras. RAISERROR é uma função específica do SQL Server para gerar mensagens de erro, não uma ação de integridade referencial.
  • (D) Incorreta: ON DELETE RESTRICT é semelhante a NO ACTION (e, em muitos SGBDs, são sinônimos). Ela impede a exclusão do registro pai se houver registros filhos que o referenciam. Isso evita o erro, mas não é a ação de propagação da exclusão.
  • (E) Incorreta: ON DELETE SET NULL define o valor da chave estrangeira nos registros filhos como NULL quando o registro pai é excluído. No entanto, a coluna d na tabela E2, que é a chave estrangeira, foi definida como NOT NULL. Portanto, esta opção não é válida para este esquema, pois tentaria atribuir NULL a uma coluna que não permite valores nulos, causando um erro. Esta é a armadilha da banca.

Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho