Como definir o valor inicial e o incremento automático no MySQL?


288

Como defino o valor inicial para uma coluna "id" em uma tabela MySQL que começa em 1001?

Eu quero fazer uma inserção "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Sem especificar o valor inicial para a coluna do ID.

Respostas:


517

Usa isto:

ALTER TABLE users AUTO_INCREMENT=1001;

ou se você ainda não adicionou uma coluna de ID, adicione-a

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
Sei que isso aconteceu há 7 anos, mas ... Posso obter uma explicação das partes desta resposta? O que ADD INDEXfaz aqui? Preciso adicioná-lo na mesma instrução que a idcoluna ou posso definir a idcoluna no CREATE TABLEbloco e depois ADD INDEX(id)?
Michael Hoffmann

2
Heh, o tempo passa ... Claro, defina-o em CREATE TABLE se você puder fazer isso. A segunda parte da resposta "ALTER TABLE" implica que você já criou uma tabela e provavelmente já foi implantada em algum lugar sem o índice adequado, o que é necessário para que o primeiro "ALTER TABLE" funcione conforme o planejado. Espero que esta explicação ajude.
Anatoliy #

Sim, isso ajuda. Eu estava olhando para algumas amostras que usavam essas declarações de maneira semelhante, e elas fazem mais sentido agora. Obrigado.
Michael Hoffmann

1
O motivo do ADD INDEX é que, sem ele, se você já tiver uma chave primária em uma tabela existente, receberá there can be only one auto column and it must be defined as a key. Você precisa do índice para que ele seja uma tecla MUL.
djsumdog

Eu tentei isso em uma tabela que acabou de ser criada sem nenhuma linha adicionada ainda. Parece que isso não funciona, a menos que tenha havido pelo menos 1 linha adicionada à tabela primeiro.
Solomon Closson

54

MySQL - Configure uma chave primária de incremento automático que comece em 1001:

Etapa 1, crie sua tabela:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

Etapa 2, defina o número inicial da chave primária de incremento automático:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Etapa 3, insira algumas linhas:

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

Etapa 4, interprete a saída:

select * from penguins

impressões:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
Como devo fazer se quiser definir um ID <1000 para pinguins especiais?
William Hu

1
Você pode inserir qualquer id livre, basta colocá-lo na lista de coluna: insert into penguins (my_id, skipper) values(999, "explicit id");(quando se utiliza 0em vez 999do valor de incremento automático será inserido)
hellcode

32

MySQL Workbench

Se você deseja evitar escrever sql, também pode fazê-lo no MySQL Workbench clicando com o botão direito do mouse na tabela, escolha "Alterar tabela ..." no menu.

Quando a exibição da estrutura da tabela for aberta, vá para a guia "Opções" (na parte inferior inferior da exibição) e defina o campo "Incremento automático" para o valor do próximo número de incremento automático.

Não se esqueça de clicar em "Aplicar" quando terminar todas as alterações.

PhpMyAdmin:

Se você estiver usando o phpMyAdmin, clique na tabela na navegação esquerda, vá para a guia "Operações" e, em Opções da tabela, altere o valor AUTO_INCREMENT e clique em OK.


1
Você está falando do phpMyAdmin?
Pacerier

1
Não, acho que ele está falando sobre o MySQL Workbench.
Saturnian

@ Saturnian, sim, você está certo, eu quis dizer o Workbench. Vou editar meu Post para esclarecer isso.
Bojan Hrnkas 23/03

O phpMyAdmin resolveu um problema de incremento automático em uma etapa, tentei seguir a rota do código e ele não estava funcionando.
tekagami 26/03/19

11

Primeiro você precisa adicionar uma coluna para incremento automático

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

Esta consulta para adicionar coluna em primeiro lugar. Agora você deve redefinir o valor inicial do incremento automático. Então use esta consulta

alter table users AUTO_INCREMENT=1001

Agora sua mesa começou com 1001


6

Você também pode configurá-lo na create tabledeclaração.

`CREATE TABLE(...) AUTO_INCREMENT=1000`

5

Além disso, no PHPMyAdmin , você pode selecionar a tabela do lado esquerdo (lista de tabelas) e fazer isso indo para lá.
Guia Operações-> Opções da Tabela-> AUTO_INCREMENT.

Agora, defina seus valores e pressione Ir sob a Tabela Opções Bo x.


4

Para isso, você deve definir um AUTO_INCREMENTvalor

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Exemplo

ALTER TABLE tablename AUTO_INCREMENT = 101

3

Como alternativa, se você estiver com preguiça de escrever a consulta SQL. Então esta solução é para você. insira a descrição da imagem aqui

  1. Abra o phpMyAdmin
  2. Selecione a tabela desejada
  3. Clique na guia Operações
  4. Defina o valor inicial desejado para AUTO_INCREMENT
  5. Feito..!
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.