SóProvas


ID
2764486
Banca
FAURGS
Órgão
TJ-RS
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Observe as tabelas a seguir, definidas em SQL (padrão SQL2 ou superior).

Create table PRODUTOS
(codp integer not null,
nomep varchar(60) not null,
categoria varchar(30) default 'perfumaria' not null,
preco numeric(5,2) default 0,
estoque integer,
primary key(codp));

create table PRODUTOSDESCONTINUADOS
(codp integer not null,
nomep varchar(60) not null,
categoria varchar(30) default 'desconhecido' not null,
preco numeric(5,2) default 0,
primary key(codp));

Considere o conjunto de comandos SQL de inserção de tuplas nas tabelas abaixo (mesmo padrão) e suponha que não haja problemas com os valores fornecidos como chave-primária.

I - INSERT INTO PRODUTOS (codp, nomep, preco) VALUES (1, 'gasex', 100);
II - INSERT INTO PRODUTOSDESCONTINUADOS SELECT codp, nomep, categoria from PRODUTOS WHERE estoque IS NULL;
III- INSERT INTO PRODUTOSDESCONTINUADOS VALUES (30, 'biutiful', null, null);

Quais comandos SQL de inserção executam corretamente?

Alternativas
Comentários
  • I. CORRETA, mesmo sem especificar o valor da coluna atributos, que é NOT NULL, ela será preenchida pelo valor default: perfumaria;

    II. INCORRETA, a meu ver deveriamos especificar as colunas da tabela PRODUTOSDESCONTINUADOS, ficando assim:

                                                 ...INTO PRODUTOSDESCONTINUADOS (codp, nomep, categoria) (SELECT....

    III. INCORRETA, observe que coluna CATEGORIA não aceita NULL, entretanto observe, novamente, que passamos NULL ,na 3ª posição, do comando INSERT INTO, portanto  o comando não será executado corretamente;

     

    GABARITO ALTERNATIVA A

  • Complementando, o item II funciona no PostgresSQL, mas dá erro no MySQL e MariaDB porque o select possui 3 colunas em vez de 4. Precisaria adicionar "preco" ou fazer como @Max escreveu