Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] No meu projeto aparece o ID_CLIENTE

Fiquei na dúvida pois no meu projeto aparece o ID_CLIENTE quando eu gero o comando para inserir. O professor falou no vídeo que ele definiu o id_cliente como autoincremento mas eu voltei nas aulas anteriores e não vi ele fazendo isso. Eu devo definir todos os meus identificadores primários como autoincremento ou não?

Obs: Estou usando o MySql

3 respostas

Olá Carla, tudo bem com você?

No contexto do SQL Server, é comum definir identificadores primários como auto incremento (IDENTITY), especialmente quando eles servem como uma chave primária. Isso é útil para garantir que cada registro na tabela tenha um identificador único.

No entanto, em relação ao MySQL, a abordagem é um pouco diferente. No MySQL, usamos AUTO_INCREMENT para alcançar o mesmo objetivo.

Exemplo:

CREATE TABLE clientes (
    ID_CLIENTE int NOT NULL AUTO_INCREMENT,
    NOME varchar(255) NOT NULL,
    EMAIL varchar(255),
    PRIMARY KEY (ID_CLIENTE)
);

Neste exemplo, a coluna ID_CLIENTE é definida como AUTO_INCREMENT e também é a chave primária da tabela.

Quanto a definir todos os seus identificadores primários como autoincremento, a resposta é: depende. Se o identificador primário for usado para garantir a unicidade de cada registro e não houver outra coluna que possa garantir essa unicidade, então faz sentido definir o identificador primário como autoincremento. No entanto, se você tiver outra coluna que possa garantir a unicidade (como um número de identificação ou um endereço de e-mail, por exemplo), você pode optar por não usar autoincremento no identificador primário.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, tudo bem

Obrigado por responder.

Coloquei minhas chaves primárias como autoincremento no MySQL, porém, ao tentar inserir o elemento não definindo que o instrutor mostrou na aula, não ficou como eu gostaria.

A inserção consiste no id primário igual a 0 e os demais campos com a string 'ND' de Não Definido.

Então eu primeiro criei as tabelas, depois inseri os valores e só depois eu fiz as ligações de chave primária e chave estrangeira, e ao final do processo eu alterei o campo id_primario para autoincremento. Só que ao verificar minha consulta, o id tinha sido alterado de 0 para 1. Parece que no mysql não consigo fazer uma inserção explícita se o campo for autoincremento.

Logo eu não consegui gravar meu elemento não definido na tabela com o campo chave primária e autoincremento. Você poderia me ajudar a contornar isso?

Obrigada desde já.

solução!

Olá Carla!

No MySQL, quando uma coluna é configurada como AUTO_INCREMENT, o banco de dados automaticamente atribui um valor incremental a essa coluna durante a inserção de novos registros, ignorando qualquer valor especificado na instrução de inserção Além disso, por padrão o MySQL não permite que uma linha com um valor de incremento automático comece com o valor zero. Na documentação do próprio MySQL diz que o armazenamento de 0 não é uma prática recomenda. É uma convenção padrão começar o auto incremento a partir de 1. Isso evita confusões, mantém consistência com práticas comuns de banco de dados e previne problemas durante operações de backup e restauração. Mas, na aula por questões de didática, o instrutor optou pelo 0, além do SQL Server não ter tido essa restrição.

Porém, nem tudo está perdido Carla, caso em algum momento você precise alterar a sequência do auto incremento, poderá fazer um ALTER TABLE na tabela, mas não poderá ser 0. Caso quiséssemos que o valor de incremento começasse por 100, poderíamos fazer:

ALTER TABLE tbl AUTO_INCREMENT = 100;

Mas, não vou te deixar sem solução, mesmo que não seja recomendado, se você ainda quiser que comece com 0, uma solução é você setar a variável de configuração para permitir a inserção do zero::

SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

Veja a seguir uma imagem de uma simulação, onde primeiro tendo inserir o valor de id 0 para "Carla" e isso não reflete no banco, que coloca o valor 3. Porém, após definir NO_AUTO_VALUE_ON_ZERO e inserir "Rafael", a inserção é feita com êxito:

Imagem que mostra o sucesso em inserir com zero após setar o auto_value_on_zero

Para desativar essa permissão de inserção com 0 em colunas de AUTO_INCREMENT , basta executar:

SET sql_mode = '';

Deixo como referência para sua consulta duas documentações do MySQL que tratam deste assunto:

Espero ter me feito claro, mas, qualquer dúvida, fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!