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.