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
- CHECK
- INSPECT
- TEST
- VALIDATE
- 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