Questão FC295893
Qual comando INSERT irá falhar, na tentativa de incluir uma nova linha em uma das tabelas desse banco de dados?
Linguagem SQL
CESGRANRIO · 2022
As tabelas a seguir fazem parte do banco de dados da área de recursos humanos de uma empresa. Elas registram os dados referentes aos empregados e aos seus dependentes.
CREATE TABLE EMPREGADO (
MATRICULA INTEGER NOT NULL,
NOME TEXT NOT NULL,
DATA_NASC TEXT NOT NULL,
CERT_RESRV INTEGER UNIQUE NULL,
PRIMARY KEY (MATRICULA));
CREATE TABLE DEPENDENTE (
MAT_EMP INTEGER NOT NULL,
NUM_SEQ INTEGER NOT NULL,
NOME TEXT NOT NULL,
DATA_NASC TEXT NOT NULL,
PRIMARY KEY (MAT_EMP, NUM_SEQ)
FOREIGN KEY (MAT_EMP)
REFERENCES EMPREGADO (MATRICULA));
O estado corrente desse banco de dados é exibido nas figuras abaixo.
EMPREGADO
| MATRICULA | NOME | DATA_NASC | CERT_RESRV |
| 11111 | Paulo Menezes | 24/05/1991 00:00 | 234811 |
| 22222 | Ana Maria Carvalho | 25/07/1983 00:00 | null |
| 33333 | Alexandre Cardoso | 11/08/1989 00:00 | 101678 |
DEPENDENTE
| MAT_EMP | NUM_SEQ | NOME | DATA_NASC |
| 22222 | 1 | Valéria | 31/12/2017 00:00 |
| 22222 | 2 | Pedro | 09/06/2015 00:00 |
| 33333 | 1 | Joana | 22/03/2019 00:00 |
| 33333 | 2 | Mariana | 25/07/2020 00:00 |
Qual comando INSERT irá falhar, na tentativa de incluir uma nova linha em uma das tabelas desse banco de dados?
- INSERT INTO DEPENDENTE(NUM_SEQ,MAT_EMP,DATA_NASC,NOME)
VALUES(00,11111,datetime(‘2015-01-06‘),‘Luiz Paulo‘);
- INSERT INTO DEPENDENTE(NOME,DATA_NASC,NUM_SEQ,MAT_EMP)
VALUES(‘Maria Paula‘,datetime(‘2017-08-11‘),3,11111);
- INSERT INTO EMPREGADO VALUES(55555,‘Antônia Pinto‘,datetime(‘1994-04-01‘),NULL);
- INSERT INTO EMPREGADO VALUES(66666,‘Adriana Andrade‘,datetime(‘1985-06-04‘));
- INSERT INTO EMPREGADO VALUES(44444,‘Nilce Peçanha‘,datetime(‘1999-09-06‘),‘‘);
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
A instrução INSERT apresentada falha porque não informa valor para todas as colunas da tabela EMPREGADO e não lista explicitamente as colunas a serem preenchidas. Quando o comando usa apenas VALUES sem especificar colunas, o SGBD espera um valor para cada coluna na ordem da definição da tabela.
No caso, EMPREGADO tem quatro colunas (MATRICULA, NOME, DATA_NASC, CERT_RESRV) e o comando fornece apenas três valores, gerando erro do tipo "table has 4 columns but 3 values were supplied".
Observação: mesmo que CERT_RESRV aceite NULL, é preciso indicar esse valor explicitamente ou usar a lista de colunas, por exemplo: INSERT INTO EMPREGADO (MATRICULA,NOME,DATA_NASC) VALUES(...), para que o SGBD atribua NULL a CERT_RESRV.
Conteúdo do catálogo FC Concursos · Atualizado em