Incrémentation automatique en phpmyadmin

94

J'ai une base de données existante utilisant PHP, MySQL et phpMyAdmin.

Lorsque les utilisateurs deviennent membres sur mon site Web, j'ai besoin que le système leur crée un numéro de membre unique à l'aide d'un numéro à cinq chiffres. par exemple 83773. Je suppose que c'est comme générer un mot de passe aléatoire sauf que je ne veux que des numéros pour mes membres. Ce numéro d'identification doit être unique pour chaque membre.

Serait-il possible pour moi de définir la clé primaire sur auto_increment dans ma table utilisateur et de la définir pour qu'elle démarre à 10000, puis s'incrémente automatiquement chaque fois qu'un membre s'inscrit?

En outre, y a-t-il un nombre maximum auquel le numéro d'identification de la clé primaire irait?

Est-ce un moyen fiable et sûr d'utiliser le numéro d'identification de la clé primaire comme numéro de membre?

JaYwzx Wong
la source
3
Certaines des personnes ci-dessous ont répondu qu'il n'y a pas de limite supérieure à la clé primaire, mais je suppose que la limite supérieure est la taille maximale du type de données que vous avez sélectionné ... peut-être que je me trompe, mais ne le serait pas limité à une valeur maximale de 4294967295 alors? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam
Veuillez récupérer la réponse acceptée. Je pense que c'est celui-là stackoverflow.com/a/18942684/248616
Nam G VU

Réponses:

201

Il existe des étapes possibles pour activer l'incrémentation automatique pour une colonne. Je suppose que la version de phpMyAdmin est 3.5.5 mais pas sûr.

Cliquez sur Table > onglet Structure > Sous Action Cliquez sur Principal (défini comme primaire), cliquez sur Modifier dans la fenêtre contextuelle, faites défiler vers la gauche et cochez A_I . Assurez-vous également que vous avez sélectionné Aucun comme valeur par défautentrez la description de l'image ici

Amit Bhagat
la source
5
Étant donné que la fonctionnalité auto-inc a été supprimée de l'onglet Opérations, il semble que voici comment l'implémenter maintenant. Merci, @AmitKB.
Mike S.
2
Cependant, quand j'ai essayé, j'ai eu cette erreur: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan
Le message est clair, vous essayez peut-être d'avoir plus d'une colonne automatique.
Amit Bhagat
1
J'ai eu un problème similaire et cela a résolu mon problème
Callat
1
wow, si simple. pourquoi personne n'a mentionné cela? m'a pris tellement de temps pour trouver une réponse comme celle-ci. de loin la meilleure réponse.
oldboy
52

Dans phpMyAdmin, accédez à la table en question et cliquez sur l'onglet "Opérations". Sur la gauche sous Options de table, vous serez autorisé à définir la valeur AUTO_INCREMENT actuelle.

Mala
la source
5
quand je fais cela, mes deux seules options concernant l'ajout d'auto_increment sont "déplacer la table vers" ou "copier la table vers". Je ne veux ni déplacer ni copier la table, mais simplement ajouter auto_increment. que se passe-t-il?? J'utilise MySQL v5.6.
oldboy
@oldboy j'ai la même chose que toi. Peut-être ont-ils supprimé la fonctionnalité dans les nouvelles versions de XAMPP PhpMyAdmin
kevind le
21

Exécutez simplement une simple requête MySQL et définissez le numéro d'incrémentation automatique sur ce que vous voulez.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

En termes de maximum, pour autant que je sache, il n'y en a pas, et il n'y a aucun moyen de limiter ce nombre.

Il est parfaitement sûr et courant de définir un numéro d'identification comme clé primaire, à incrémentation automatique int. Il existe des alternatives telles que l'utilisation de PHP pour générer des numéros de membre pour vous dans un format spécifique, puis vérifier que le numéro n'existe pas avant de l'insérer, mais pour moi personnellement, j'irais avec la valeur de l'id primaire auto_inc.

mortelMango
la source
10
  1. Dans l'onglet "Structure" de votre tableau
  2. Cliquez sur le crayon de la variable que vous voulez auto_increment
  3. sous l'onglet "Extra", choisissez "auto_increment"
  4. puis allez dans l'onglet "Opérations" de votre tableau
  5. Sous "Options de table" -> type auto_increment -> 10000
Phil
la source
2

Dans phpMyAdmin, si vous configurez un champ dans votre table pour l'incrémentation automatique, puis insérez une ligne et définissez la valeur de ce champ sur 10000, il continuera à partir de là.

Tim
la source
2

@AmitKB, votre procédure est correcte. Bien que cette erreur

Erreur de requête: # 1075 - Définition de table incorrecte; il ne peut y avoir qu'une seule colonne automatique et elle doit être définie comme clé

peut être résolu en marquant d'abord le champ comme clé (en utilisant l'icône de clé avec l'étiquette primaire), sauf si vous avez une autre clé, cela peut ne pas fonctionner.

KE Keronei
la source
Cela fait si longtemps que je n'ai pas joué avec phpMyAdmin que j'ai oublié comment faire cela. Merci pour la correction de ce problème secondaire. Cela a fonctionné pour moi.
rncrtr
0

Vous ne pouvez pas définir une valeur maximale (autre que de choisir un type de données qui ne peut pas contenir de grands nombres, mais il n'y en a aucun qui a la limite que vous demandez). Vous pouvez vérifier cela avec LAST_INSERT_ID () après l'insertion pour obtenir l'id du membre nouvellement créé, et s'il est trop gros, le gérer dans votre code d'application (par exemple, supprimer et rejeter le membre).

Pourquoi voulez-vous une limite supérieure?

Emil Vikström
la source
0

Cela est dû aux tables wp_terms, wp_termmetaet wp_term_taxonomy, dont tous leurs identifiants n'étaient pas définis surAUTO_INCREMENT

Pour ce faire, allez dans phpmyadmin, cliquez sur la base de données de préoccupation, la wp_termstable, cliquez sur l'onglet structure, à droite vous verrez un onglet nommé A_I(AUTO_INCREMENT), vérifiez-le et enregistrez (vous ne faites cela que pour la première option, dans le cas où wp_termvous êtes ne le faire que pour term_id).

Faites de même pour wp_termmetaet wp_term_taxonomycela résoudra le problème.

Faith Olanrewaju
la source
Il semble que vous pensez que l'OP utilise WordPress, où avez-vous trouvé ces informations? Je ne trouve aucune référence à WP dans la question.
Raul Sauco
0

(a) Cliquez simplement sur votre base de données, sélectionnez votre table. Cliquez sur «Opérations». Dans la section «options de table», changez la valeur AUTO_INCREMENT en la valeur souhaitée, dans ce cas: 10000 cliquez sur «Go». (Voir l'image ci-jointe)

(b) Vous pouvez également exécuter une commande SQL sous l'onglet SQL après avoir sélectionné votre table. Tapez simplement 'ALTER TABLE nom_table AUTO_INCREMENT = 10000;' puis cliquez sur «Go». C'est tout!! RÉGLAGE DE LA VALEUR D'AUGMENTATION AUTOMATIQUE image (a)

RÉGLAGE DE LA VALEUR D'AUGMENTATION AUTOMATIQUE image (B)

Done_Ke
la source