← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Analise o comando a seguir, executado num ambiente MySQL. CREATE TABLE TESTE ( XPTO MEDIUMINT NOT NULL AUTO_INCREMENT, NOME CHAR(30) NOT NULL, PRIMARY KEY (XPTO) ); Supondo que a tabela acima tenha sido criada, considere os seguintes comandos INSERT INTO TESTE (NOME) VALUES ('Pedro') INSERT INTO TESTE (XPTO, NOME) VALUES (0,'Maria') INSERT INTO TESTE (XPTO, NOME) VALUES (NULL,'Gabriel') INSERT INTO TESTE (XPTO, NOME) VALUES (100,'Nina'); Nesse contexto, assinale quantos desses quatro últimos comandos serão aceitos e processados corretamente pelo MySQL.

Gabarito: E

No MySQL, a coluna AUTO_INCREMENT funciona como um contador automático para criar valores únicos, normalmente usada em chave primária. Se voce nao informa o valor, ou informa NULL, o banco gera o proximo numero da sequencia sem drama. E tem um detalhe importante de prova: por padrao, o valor 0 tambem pode disparar o AUTO_INCREMENT, a menos que o modo SQL NO_AUTO_VALUE_ON_ZERO esteja ativado. Aqui, a tabela TESTE foi criada com XPTO como MEDIUMINT NOT NULL AUTO_INCREMENT e PRIMARY KEY, entao ela esta perfeita para esse comportamento. O primeiro comando, com apenas NOME, faz o MySQL preencher XPTO automaticamente. O segundo, com XPTO = 0, tambem pode ser aceito e convertido para valor automatico no modo padrao. O terceiro, com XPTO = NULL, igualmente dispara a geracao automatica. O quarto, com XPTO = 100, usa um valor explicito, e isso tambem e permitido desde que nao haja conflito com a chave primaria. Ou seja, os quatro comandos sao aceitos e processados corretamente. Em prova, a banca gosta de testar essa diferenca entre NULL, 0 e valor informado em colunas AUTO_INCREMENT. Se voce lembra da regra de que 0 e NULL podem acionar a geracao automatica, metade da armadilha ja foi embora. Resumo de bolso: em MySQL padrao, AUTO_INCREMENT aceita omissao, NULL e ate 0; valor explicito tambem pode ser inserido normalmente. A questao fica com gabarito E porque os quatro inserts sao validos.

Continue treinando

Questões relacionadas