FC ConcursosFC Concursos

Questão FC295898

Ao coletar dados em um sistema compatível com SQL 2008 para fazer uma análise de dados, um programador percebeu que havia dois campos, data_de_nascimento e data_de_emissão_RG, em q

Linguagem SQL

CESGRANRIO · 2021

Ao coletar dados em um sistema compatível com SQL 2008 para fazer uma análise de dados, um programador percebeu que havia dois campos, data_de_nascimento e data_de_emissão_RG, em que o valor de data_de_emissão_RG sempre deve ser mais recente que data_de_nascimento. Percebeu, porém, que em 10% das linhas acontecia o inverso, isto é, data_de_nascimento era mais recente que data_de_emissão_RG. Ele corrigiu os dados nessas linhas, verificando que estavam consistentemente trocados, mas, preocupado que tal problema voltasse a acontecer, resolveu solicitar ao DBA uma alteração da tabela, de forma que data_de_emissão_RG sempre tivesse que ser mais recente que data_de_nascimento.

 

O DBA atendeu adequadamente a esse pedido do programador por meio de uma restrição em SQL 2008 do tipo

  1. CHECK
  2. INSPECT
  3. TEST
  4. VALIDATE
  5. VERIFY
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

A solicitação foi atendida com uma CHECK constraint, que impõe uma condição lógica sobre colunas da tabela para garantir integridade dos dados no momento de INSERT/UPDATE.

No caso, a condição é que a data de emissão da RG seja posterior à data de nascimento, expressa por \( \text{data\_de\_nascimento} < \text{data\_de\_emissao\_RG} \).

Exemplo prático (pode ser feito em CREATE TABLE ou ALTER TABLE):
ALTER TABLE pessoa ADD CONSTRAINT chk_datas CHECK (data_de_nascimento < data_de_emissao_RG);

Observação importante: se alguma coluna aceitar NULL, a avaliação pode resultar em UNKNOWN e a CHECK não bloqueará a linha; portanto, combine com NOT NULL ou trate explicitamente NULLs se necessário.

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

Continue aprendendo