Comment définir la valeur initiale et l'incrémentation automatique dans MySQL?


288

Comment définir la valeur initiale d'une colonne "id" dans une table MySQL commençant à 1001?

Je veux faire un encart "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

Sans spécifier la valeur initiale de la colonne id.

Réponses:


517

Utilisez ceci:

ALTER TABLE users AUTO_INCREMENT=1001;

ou si vous n'avez pas encore ajouté une colonne id, ajoutez-la également

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

2
Je me rends compte que c'était il y a 7 ans, mais ... Puis-je avoir une explication des parties de cette réponse? Que fait ADD INDEX-on ici? Dois-je l'ajouter dans la même instruction que la idcolonne, ou puis-je définir la idcolonne dans le CREATE TABLEbloc et ensuite ADD INDEX(id)?
Michael Hoffmann

2
Hé, le temps passe ... Bien sûr, définissez-le dans CREATE TABLE si vous êtes capable de le faire. La deuxième partie "ALTER TABLE" de la réponse implique que vous avez déjà créé une table et qu'elle est probablement déjà déployée quelque part sans index approprié, ce qui est requis pour que la première "ALTER TABLE" fonctionne comme prévu. J'espère que cette explication aide.
Anatoliy

Oui, ça aide. Je regardais quelques exemples qui utilisaient ces déclarations de la même manière, et ils ont plus de sens maintenant. Je vous remercie.
Michael Hoffmann

1
La raison de l'ADD INDEX est que sans lui, si vous avez déjà une clé primaire sur une table existante, vous l'obtiendrez there can be only one auto column and it must be defined as a key. Vous avez besoin de l'index pour qu'il s'agisse d'une clé MUL.
djsumdog

J'ai essayé cela sur une table qui venait d'être créée sans aucune ligne ajoutée pour le moment. Il semble que cela ne fonctionne pas sauf si au moins 1 ligne a été ajoutée au tableau en premier.
Solomon Closson

54

MySQL - Configurez une clé primaire à incrémentation automatique qui commence à 1001:

Étape 1, créez votre table:

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

Étape 2, définissez le numéro de début de la clé primaire d'incrémentation automatique:

ALTER TABLE penguins AUTO_INCREMENT=1001;

Étape 3, insérez quelques lignes:

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.");

Étape 4, interprétez la sortie:

select * from penguins

impressions:

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

1
Comment dois-je faire si je veux définir un identifiant <1000 pour les pingouins spéciaux?
William Hu

1
Vous pouvez insérer n'importe quel identifiant gratuit, il suffit de le mettre dans la liste des colonnes: insert into penguins (my_id, skipper) values(999, "explicit id");(lors de l'utilisation 0au lieu de 999la valeur d'incrémentation automatique sera insérée)
hellcode

32

MySQL Workbench

Si vous voulez éviter d'écrire sql, vous pouvez également le faire dans MySQL Workbench en cliquant avec le bouton droit sur la table, choisissez "Modifier la table ..." dans le menu.

Lorsque la vue de la structure du tableau s'ouvre, allez dans l'onglet "Options" (en bas de la vue) et définissez le champ "Incrémentation automatique" sur la valeur du prochain numéro d'auto-incrémentation.

N'oubliez pas de cliquer sur «Appliquer» lorsque vous avez terminé toutes les modifications.

PhpMyAdmin:

Si vous utilisez phpMyAdmin, vous pouvez cliquer sur le tableau dans la navigation de gauche, aller dans l'onglet "Opérations" et sous Options de tableau changer la valeur AUTO_INCREMENT et cliquer sur OK.


1
Parlez-vous de phpMyAdmin?
Pacerier

1
Non, je pense qu'il parle du MySQL Workbench.
Saturnian

@Saturnian, oui vous avez raison, je voulais dire le Workbench. Je vais modifier mon message pour clarifier cela.
Bojan Hrnkas

phpMyAdmin a résolu un problème d'auto-incrémentation en une seule étape, j'ai essayé de suivre la route du code et cela ne fonctionnait pas.
tekagami

11

Vous devez d'abord ajouter une colonne pour l'incrémentation automatique

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

Cette requête pour ajouter une colonne dans un premier temps. Vous devez maintenant réinitialiser la valeur initiale de l'incrémentation automatique. Alors utilisez cette requête

alter table users AUTO_INCREMENT=1001

Maintenant, votre table a commencé avec 1001


6

Vous pouvez également le définir dans la create tabledéclaration.

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

5

De plus, dans PHPMyAdmin , vous pouvez sélectionner la table du côté gauche (liste des tables) puis le faire en vous y rendant.
Onglet Opérations-> Options de table-> AUTO_INCREMENT.

Maintenant, définissez vos valeurs, puis appuyez sur Go sous le tableau Options Bo x.


4

Pour cela, vous devez définir une AUTO_INCREMENTvaleur

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>

Exemple

ALTER TABLE tablename AUTO_INCREMENT = 101

3

Alternativement, si vous êtes trop paresseux pour écrire la requête SQL. Alors cette solution est pour vous. entrez la description de l'image ici

  1. Ouvrez phpMyAdmin
  2. Sélectionnez le tableau souhaité
  3. Cliquez sur l' onglet Opérations
  4. Définissez la valeur initiale souhaitée pour AUTO_INCREMENT
  5. Terminé..!
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.