Incremento automático no phpmyadmin


94

Eu tenho um banco de dados existente usando PHP, MySQL e phpMyAdmin.

Quando os usuários se tornam membros em meu site, preciso que o sistema crie um número de associação exclusivo para eles usando um número de cinco dígitos. por exemplo, 83773. Acho que é como gerar uma senha aleatória, exceto que só quero números para meus membros. Este número de identificação deve ser exclusivo para cada membro.

Seria possível para mim definir a chave primária para auto_increment na minha tabela de usuário e defini-la para começar em 10000 e, em seguida, incrementar automaticamente sempre que um membro se registrar?

Além disso, há um número máximo que o número de ID da chave primária pode atingir?

Esta é uma maneira confiável e segura de usar o número de ID da chave primária como um número de membro?


3
Algumas das pessoas abaixo responderam que não há limite superior para a chave primária, mas eu presumiria que o limite superior é o tamanho máximo do tipo de dados que você selecionou ... talvez eu esteja errado, mas não seria limitado a um valor máximo de 4294967295 então? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Por favor, pegue a resposta aceita. Eu acho que este é um stackoverflow.com/a/18942684/248616
Nam G VU

Respostas:


201

Existem etapas possíveis para ativar o incremento automático para uma coluna. Acho que a versão do phpMyAdmin é 3.5.5, mas não tenho certeza.

Clique em Tabela > guia Estrutura > Em Ação, clique em Principal (definir como principal), clique em Alterar na janela pop-up, role para a esquerda e marque A_I . Certifique-se também de que selecionou Nenhum como Padrãoinsira a descrição da imagem aqui


5
Como o recurso de inserção automática foi removido da guia Operações, parece que agora é assim que você deve implementá-lo. Obrigado, @AmitKB.
Mike S.

2
Porém, quando tentei fazer isso, recebi este erro: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

A mensagem é clara, você pode estar tentando ter mais de uma coluna automática.
Amit Bhagat

1
Tive um problema semelhante e isso resolveu meu problema
Callat

1
nossa, tão simples. por que ninguém mencionou isso? demorei tanto para encontrar uma resposta como esta. de longe a melhor resposta.
oldboy de

52

No phpMyAdmin, navegue até a tabela em questão e clique na guia "Operações". À esquerda, em Opções de tabela, você poderá definir o valor AUTO_INCREMENT atual.


5
quando eu faço isso, minhas duas únicas opções em relação à adição de auto_increment são "mover tabela para" ou "copiar tabela para". Não quero mover ou copiar a tabela, mas simplesmente adicionar auto_increment. o que está acontecendo?? estou usando o MySQL v5.6.
oldboy de

@oldboy eu ganho o mesmo que você. Talvez eles tenham removido o recurso em versões mais recentes do XAMPP PhpMyAdmin
kevind

21

Basta executar uma consulta MySQL simples e definir o número do incremento automático para o que você quiser.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Em termos de máximo, que eu saiba não existe, nem há como limitar esse número.

É perfeitamente seguro e prática comum definir um número de id como uma chave primária, incrementando automaticamente o int. Existem alternativas, como usar o PHP para gerar números de associação para você em um formato específico e, em seguida, verificar se o número não existe antes de inserir, no entanto, para mim pessoalmente, eu escolheria o valor auto_inc do id principal.


10
  1. Na guia "Estrutura" da sua mesa
  2. Clique no lápis da variável que deseja auto_incrementar
  3. na guia "Extra", escolha "auto_increment"
  4. em seguida, vá para a guia "Operações" de sua mesa
  5. Em "Opções de tabela" -> tipo de incremento automático -> 10000

2

No phpMyAdmin, se você configurar um campo em sua tabela para incremento automático e, em seguida, inserir uma linha e definir o valor desse campo para 10000, ele continuará a partir daí.


2

@AmitKB, seu procedimento está correto. Embora este erro

Erro de consulta: # 1075 - Definição de tabela incorreta; pode haver apenas uma coluna automática e deve ser definida como uma chave

pode ser resolvido marcando primeiro o campo como chave (usando o ícone de chave com o rótulo primário), a menos que você tenha outra chave, então pode não funcionar.


Faz tanto tempo que não jogo com phpMyAdmin que esqueci como fazer isso. Obrigado pela correção para este problema secundário. Funcionou para mim
rncrtr

0

Você não pode definir um valor máximo (além de escolher um tipo de dados que não pode conter grandes números, mas não há nenhum que tenha o limite que você está pedindo). Você pode verificar isso com LAST_INSERT_ID () após inserir para obter o id do membro recém-criado, e se for muito grande, manipule-o no código do aplicativo (por exemplo, exclua e rejeite o membro).

Por que você quer um limite superior?


0

Isto é devido aos wp_terms, wp_termmetae wp_term_taxonomymesas, que teve todo o seu ID não está definido paraAUTO_INCREMENT

Para fazer isso, vá para phpMyAdmin, clique no banco de dados de preocupação, wp_termstabela, clique em estrutura Tab, pelo lado direito, você verá uma guia chamada A_I(AUTO_INCREMENT), verificá-lo e salvar (Você só está fazendo isso para a primeira opção, no caso wp_termvocê está apenas fazendo isso term_id).

Faça o mesmo para wp_termmetae wp_term_taxonomyisso resolverá o problema.


Parece que você acha que o OP está usando WordPress, onde você encontrou essa informação? Não consigo encontrar nenhuma referência a WP na pergunta.
Raul Sauco

0

(a) Simplesmente clique em seu banco de dados, selecione sua mesa. Clique em 'Operações'. Na seção 'opções da tabela' altere o valor AUTO_INCREMENT para o valor desejado, neste caso: 10000 clique em 'Ir'. (Veja a imagem em anexo)

(b) Como alternativa, você pode executar um comando SQL na guia SQL após selecionar sua tabela. Simplesmente digite 'ALTER TABLE nome_tabela AUTO_INCREMENT = 10000;' em seguida, clique em 'Go'. É isso aí!! AJUSTE DA imagem DE VALOR DE INCREMENTO AUTOMÁTICO (a)

AJUSTE DA imagem DE VALOR DE INCREMENTO AUTOMÁTICO (B)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.