Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024

Banco de DadosConsultas e Comandos em SQL
Código
qa630727
Banca
Quadrix
Órgão
IBICT
Ano
2024
Cargo
Tecno ( )
CREATE TABLE Autores ( AutorID INT AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR(100), Email VARCHAR(100), InstituicaoID INT, FOREIGN KEY (InstituicaoID) REFERENCES Instituicoes(InstituicaoID) ); CREATE TABLE Revistas ( RevistaID INT AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR(100), ISSN VARCHAR(20) ); CREATE TABLE Artigos ( ArtigoID INT AUTO_INCREMENT PRIMARY KEY, Titulo VARCHAR(255), Resumo TEXT, PalavrasChave VARCHAR(255), RevistaID INT, FOREIGN KEY (RevistaID) REFERENCES Revistas(RevistaID) ); CREATE TABLE Instituicoes ( InstituicaoID INT AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR(100), Cidade VARCHAR(100), Pais VARCHAR(100) ); CREATE TABLE Autor_Artigo ( AutorID INT, ArtigoID INT, PRIMARY KEY (AutorID, ArtigoID), FOREIGN KEY (AutorID) REFERENCES Autores(AutorID), FOREIGN KEY (ArtigoID) REFERENCES Artigos(ArtigoID) ); Com relação ao código SQL acima, no SGBD MySQL, julgue o item a seguir.   Ao se executar o comando a seguir, ocorrerá erro, pois não foi informado o código do autor (AutorID). INSERT INTO Autores (Nome, Email, InstituicaoID) VALUES (‘João Silva’, ‘[email protected]’, 1);
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

AUTO_INCREMENT no MySQL: o valor é gerado automaticamente

Gabarito: ERRADO (letra E). O comando INSERT INTO Autores (Nome, Email, InstituicaoID) VALUES ('João Silva', '[email protected]', 1) não gera erro, pois a coluna AutorID foi definida como AUTO_INCREMENT PRIMARY KEY — o MySQL gera automaticamente o valor sequencial para essa coluna quando ela é omitida na lista de colunas do INSERT. A afirmação de que ocorreria erro por falta do código do autor está incorreta.

O AUTO_INCREMENT é um recurso específico do MySQL (e de outros SGBDs, como o PostgreSQL com SERIAL) que automatiza a geração de valores numéricos únicos para uma coluna, tipicamente a chave primária. Quando uma coluna é declarada com AUTO_INCREMENT, o banco de dados assume a responsabilidade de atribuir o próximo valor disponível (geralmente o maior valor existente + 1) sempre que um novo registro é inserido sem que um valor explícito seja fornecido para essa coluna.

Na prática, o comando INSERT do enunciado funciona perfeitamente: o MySQL atribuirá o valor 1 (ou o próximo valor da sequência) ao AutorID do novo registro. A omissão da coluna na lista de colunas do INSERT é justamente o que aciona o mecanismo de auto-geração. Se o usuário quisesse inserir um valor específico, ele poderia incluir AutorID na lista e fornecer o valor — mas isso é opcional.

É importante distinguir o comportamento do AUTO_INCREMENT de uma coluna PRIMARY KEY comum sem auto-numeração. Neste último caso, a omissão da chave primária no INSERT de fato geraria erro, pois o banco não saberia qual valor atribuir. Mas com AUTO_INCREMENT, a geração automática elimina essa necessidade. A pegadinha da banca está exatamente em confundir esses dois cenários: o candidato que não conhece o AUTO_INCREMENT pode achar que a chave primária precisa ser sempre informada manualmente.

Guarde a regra de ouro: coluna AUTO_INCREMENT não precisa ser informada no INSERT — o banco cuida dela. É esse critério que decide a questão.

Item — ❌ ERRADO (gabarito)

A afirmação diz que ocorrerá erro porque o AutorID não foi informado. Isso é falso. A coluna AutorID foi declarada como AUTO_INCREMENT PRIMARY KEY na criação da tabela Autores. Quando o comando INSERT omite essa coluna, o MySQL gera automaticamente o próximo valor inteiro sequencial. Portanto, o comando é válido e será executado com sucesso, inserindo um novo autor com AutorID atribuído automaticamente.

NÃO CAIA NESSA!

Em questões sobre INSERT com AUTO_INCREMENT, verifique sempre se a coluna omitida é a chave primária com auto-numeração. Se for, a omissão é intencional e correta. A pegadinha clássica é afirmar que falta a chave primária, quando na verdade o AUTO_INCREMENT a supre automaticamente.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qa630727