FC ConcursosFC Concursos

Questão FC295936

Que definição deve ser utilizada para implementar essa restrição por meio de um gatilho?

Sistema de Gerenciamento de Banco de Dados (SGBD)

CESGRANRIO · 2022

Em banco de dados, os gatilhos são utilizados, entre outros objetivos, para implementar restrições de integridade. Considere que em um banco de dados de um banco comercial há duas tabelas, CLIENTE (chave primária CPF) e SERVICO (chave primária composta por CPF e identificação do serviço), e há a restrição de que um cliente não pode estar associado a mais de cinco serviços.

 

Que definição deve ser utilizada para implementar essa restrição por meio de um gatilho?

  1. BEFORE INSERT ON CLIENTE
  2. AFTER INSERT ON CLIENTE
  3. BEFORE INSERT ON SERVICO
  4. AFTER INSERT ON SERVICO
  5. WHEN CLIENTE INSERT ON SERVICO
Mostrar resposta e comentário

Gabarito

Certo

Comentário do professor

A definição BEFORE INSERT ON SERVICO é a indicada porque o gatilho deve validar a restrição antes que um novo serviço seja efetivamente gravado. Assim, ao interceptar a operação INSERT na tabela SERVICO, é possível checar quantos serviços já estão associados ao CPF do registro que será inserido e impedir a inclusão caso a regra seja violada.

Na ação do gatilho deve-se obter a contagem de serviços para o CPF (ex.: SELECT COUNT(*) WHERE CPF = NEW.CPF) e aplicar a condição de bloqueio: se \(count \ge 5\) ou \(count+1>5\), aborta-se a operação e retorna-se erro.

Disparar before evita que o banco fique com dados inválidos; para segurança em concorrência, implemente a checagem dentro de mesma transação com bloqueio adequado.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo