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.
- A)Zero.
Errada, porque nao sao zero comandos aceitos: o MySQL permite todos os quatro neste caso.
- B)Um.
Errada, porque mais de um comando e valido na presenca de AUTO_INCREMENT, inclusive com NULL, 0 e valor explicito.
- C)Dois.
Errada, porque nao sao apenas dois: os quatro inserts funcionam no comportamento padrao do MySQL.
- D)Três.
Errada, porque nao sao tres: o comando com XPTO = 100 tambem e aceito normalmente.
- E)Quatro.
Certa, porque os quatro comandos sao aceitos no MySQL padrao com AUTO_INCREMENT, inclusive quando XPTO recebe 0 ou NULL.
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.