FC ConcursosFC Concursos

Questão FC295903

Qual comando SQL irá produzir um erro quando for executado?

Linguagem SQL

CESGRANRIO · 2019

O esquema relacional a seguir define um banco de dados, que contém os resultados das provas de natação dos Jogos Pan-americanos de 2019. Os nomes das tabelas e dos campos são autoexplicativos, permitindo, assim, entender a organização dos dados. As únicas exceções são os campos TEMPO_INDV e TEMPO, presentes na tabela RESULTADO. Eles existem porque em provas de revezamento são registrados os tempos (TEMPO_INDV) de cada um dos 4 membros da equipe e o tempo total (TEMPO) gasto pela equipe para completar a prova. Em provas individuais, o campo TEMPO_INDV recebe o valor nulo (NULL), enquanto o tempo gasto pelo atleta para completar a prova é registrado no campo TEMPO.

 

CREATE TABLE ATLETA (

NUMERO NUMBER(5,0) NOT NULL,

NOME VARCHAR2(50) NOT NULL,

PAIS CHAR(3) NOT NULL,

CONSTRAINT ATLETA_PK PRIMARY KEY (NUMERO))

 

CREATE TABLE PROVA (

CODIGO CHAR(5) NOT NULL,

DESCRICAO VARCHAR2(30) NOT NULL,

CONSTRAINT PROVA_PK PRIMARY KEY (CODIGO))

 

CREATE TABLE RESULTADO (

NUM_ATL      NUMBER(5,0) NOT NULL,

COD_PRV      CHAR(5) NOT NULL,

COLOCACAO NUMBER(2,0) NOT NULL,

TEMPO_INDV VARCHAR2(8),

TEMPO      VARCHAR2(8) NOT NULL,

CONSTRAINT RESULTADO_PK PRIMARY KEY (NUM_ATL,COD_PRV),

CONSTRAINT RES_FK1 FOREIGN KEY (NUM_ATL)

REFERENCES ATLETA (NUMERO),

CONSTRAINT RES_FK2 FOREIGN KEY (COD_PRV)

REFERENCES PROVA (CODIGO))

 

 

A Figura a seguir exibe uma possível configuração das tabelas do banco de dados de provas de natação em que os dados armazenados são consistentes com as restrições definidas para essas tabelas.

 

 

Qual comando SQL irá produzir um erro quando for executado?

  1. INSERT INTO RESULTADO VALUES(1022,'HL5',4,'22,01')
  2. DELETE FROM ATLETA WHERE PAIS='MEX'
  3. UPDATE PROVA SET DESCRICAO='200 MTS LIVRES - MASC' WHERE CODIGO='HL10'
  4. UPDATE RESULTADO SET NUM_ATL=1009 WHERE NUM_ATL=1021 AND COD_PRV='HL5'
  5. DELETE FROM PROVA WHERE CODIGO='HL10'
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

O comando INSERT falha porque não fornece valor para o campo TEMPO, que foi declarado como NOT NULL na tabela RESULTADO.

Sem especificar a lista de colunas, os valores em VALUES(1022,'HL5',4,'22,01') são atribuídos às primeiras quatro colunas (NUM_ATL, COD_PRV, COLOCACAO, TEMPO_INDV), deixando o quinto campo (TEMPO) sem valor (NULL). Como TEMPO não admite NULL, a inserção viola a restrição e gera erro.

Forma correta: informar todos os campos na ordem desejada ou incluir explicitamente o valor de TEMPO (ou listar colunas em INSERT), para não deixar o campo obrigatório sem valor.

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

Continue aprendendo