337 votes

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

Comment puis-je définir la valeur initiale d'une colonne "id" dans une table MySQL qui commence à partir de 1001 ?

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

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

593voto

Anatoliy Points 7775

Utilisez ça :

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 votes

Je réalise que c'était il y a 7 ans, mais... Puis-je avoir une explication des parties de cette réponse ? Que fait ADD INDEX faire ici ? Dois-je l'ajouter dans la même déclaration que l'option id ou puis-je définir la colonne id dans la colonne CREATE TABLE et ensuite ADD INDEX(id) ?

3 votes

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

0 votes

Oui, ça aide. J'ai examiné des échantillons qui utilisaient ces déclarations de manière similaire, et elles ont plus de sens maintenant. Merci.

64voto

Eric Leschinski Points 14289

MySQL - Configurer une clé primaire auto-incrémentée qui commence à 1001 :

Étape 1, créez votre tableau :

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

Etape 2, définir le numéro de départ de la clé primaire à incrémentation automatique :

ALTER TABLE penguins AUTO_INCREMENT=1001;

Étape 3, insérez quelques rangées :

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éter le résultat :

select * from penguins

des empreintes :

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

1 votes

Comment dois-je faire si je veux définir un id < 1000 pour les pingouins spéciaux ?

2 votes

Vous pouvez insérer n'importe quel identifiant libre, il suffit de le mettre dans la liste des colonnes : insert into penguins (my_id, skipper) values(999, "explicit id"); (lorsque vous utilisez 0 au lieu de 999 la valeur d'auto-incrément sera insérée)

32voto

Bojan Hrnkas Points 401

Banc d'essai MySQL

Si vous voulez éviter d'écrire du sql, vous pouvez aussi le faire dans MySQL Workbench en faisant un clic droit sur la table, choisissez "Alter 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ément automatique" à la valeur du prochain numéro d'auto-incrément.

N'oubliez pas de cliquer sur "Appliquer" lorsque vous avez terminé tous les changements.

PhpMyAdmin :

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

1 votes

Parlez-vous de phpMyAdmin ?

1 votes

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

0 votes

@Saturnian, oui vous avez raison, je voulais parler du Workbench. Je vais modifier mon message pour le préciser.

12voto

John Points 92

Vous devez d'abord ajouter une colonne pour l'auto-incrément.

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

Cette requête pour ajouter une colonne au début. Maintenant vous devez réinitialiser la valeur initiale de l'auto-incrément. Utilisez donc cette requête

alter table users AUTO_INCREMENT=1001

Maintenant votre table a commencé avec 1001

9voto

ospider Points 1507

Vous pouvez également le définir dans le create table déclaration.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X