Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/07/2007, 15h40   #1
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Par défaut probleme d'auto increment

Bonjour,

j'ai un petit probleme :

Je voudrais ajouter un attribut auto incrémenté à une de mes tables, sans que ce soit une clé, et mysql, ce petit blagueur, me dit qu'il ne peut pas sauf si cet attribut est une clé.

Sauf que sur 3 autres de mes tables, j'ai des attributs non clé, non index autoincrémentés.

Donc je voudrais savoir comment me dépatouiller de ça.

Merci d'avance
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 15h42   #2
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Si ce n'est pas une clef, tu veux que cela s'incremente par rapport a quoi ?!?
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 15h44   #3
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
par rapport à la plus haute des valeurs ? c'est comme ça que ça fait normalement non ?
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 15h57   #4
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
mais alors a quoi va te servir cette colonne incrémentée si tu as deja une clé primaire dans ta table ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h02   #5
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Citation:
Envoyé par Faiche
par rapport à la plus haute des valeurs ? c'est comme ça que ça fait normalement non ?
Mais ca veut dire que....elle est unique ?!?!


PS : desole pour le ton, mais j'ai pas l'impression que tu y es vraiment reflechi
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h08   #6
Invité de passage
 
Inscription : juillet 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 5
Points : 2
Points : 2
Citation:
Envoyé par Anthony.Desvernois
Mais ca veut dire que....elle est unique ?!?!


PS : desole pour le ton, mais j'ai pas l'impression que tu y es vraiment reflechi
Avoir un champ auto incrémenté peut parfois être pratique pour récupérer les données dans leur ordre d'ajout quand la clé primaire ne contient aucun champ index. Je pense que c'est ce qu'il veut faire.

Merci de répondre que si vous apportez une aide constructive et non des commentaires personnels inutiles.
sneakysponge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h11   #7
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
unique ça veut pas dire clé.

J'ai besoin de réduire ma donnée en un seul identifiant. Mais depuis l'extérieur, je ne le connais pas, donc je vais pas m'amuser a retrouver une entrée qui s'appelle 1224213125141367865, tu vois ?

Donc effectivement, j'y suis reflechi, comme tu dirais, et encore une fois, ma question n'est pas la.

Si qqun pouvait m'éclairer, merci d'avance
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h17   #8
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Mais as tu une clef primaire dans ta table ? Je ne vois pas qu'est ce qui te pose probleme a mettre ta valeur en clef primaire avec auto-incrementation.
Cela ne t'oblige pas a retrouver la valeur par son numero, encore heureux.
Tu peux mettre un champs texte plus explicite en unique si ton idee de base etait d'utiliser une chaine en primaire. Ce seras plus rapide, et surtout, les auto increment sont fait pour cela.

PS ; au passage, mes remarques precedentes sont constructives.
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h18   #9
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Citation:
J'ai besoin de réduire ma donnée en un seul identifiant.
C'est a dire ? quel est le but quand tu dit réduire ta donnée? ta clef primaire est unique mais tu ne peux pas l'exploiter comme tu le veux ?

Peut tu donner un extrait de tes données pour qu'on comprenne bien le but de ta manoeuvre ?

merci
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h19   #10
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Citation:
Envoyé par Anthony.Desvernois
Mais as tu une clef primaire dans ta table ? Je ne vois pas qu'est ce qui te pose probleme a mettre ta valeur en clef primaire avec auto-incrementation.
Cela ne t'oblige pas a retrouver la valeur par son numero, encore heureux.
Tu peux mettre un champs texte plus explicite en unique si ton idee de base etait d'utiliser une chaine en primaire. Ce seras plus rapide, et surtout, les auto increment sont fait pour cela.

PS ; au passage, mes remarques precedentes sont constructives.
Bon, je vais passer ma journée a te ressortir mes shémas.

Je suis pas en train de construire un site web avec 50 entrées, je peux pas me permettre de tout foutre en clé primaire, sinon ça devient n'importe quoi.

Donc on a vu que tu n'avais pas compris, et que tu ne savais pas, on va passer au joueur suivant, merci.
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h24   #11
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Citation:
Envoyé par pop_up
C'est a dire ? quel est le but quand tu dit réduire ta donnée? ta clef primaire est unique mais tu ne peux pas l'exploiter comme tu le veux ?

Peut tu donner un extrait de tes données pour qu'on comprenne bien le but de ta manoeuvre ?

merci
Bon, je peux pas rentrer vraiment dans les détail, alors je vais essayer de trouver un exemple :

J'ai un des entrées représentant des clients. Chaque client provient d'une ville. J'ai une table ville avec pleins de données sur la ville.

Logiquement, la clé primaire de la table Ville est multiple : nom du pays, nom de la region, nom de la ville.

Donc pour chaque client, je peux pas écrire les trois clés. Donc je fournis un attribut ville_id à la table Ville, qui sera auto incrémenté, donc je me moque totalement de la valeur, du moment qu elle fait le lien entre Ville et Client.

Voila ce que je veux dire par réduire ma donnée. Je n'ai pas besoin de mettre cet identifiant en clé.
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h25   #12
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Lol, ben demerde toi. Je suis juste venu t'aider, maintenant si tu n'es pas capable de prendre un peu sur toi, d'expliquer correctement ton probleme, c'est ton probleme.

Au passage, j'ai tres bien compris ton probleme, si tu relis mon dernier post tu verras que ton schema ne convient pas.

EDIT : rectification, en fait non, tu fait dans le mauvais ordre. L'id representant
la ville doit etre la clef primaire de l'autre table que tu transmet a ton enregistrement client, pas l'inverse.

D'autres part, 50 entrees dans une table, ca fait un peu peur.
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h26   #13
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Je ne suis pas sur de bien comprendre mais si au lieu de mettre une colonne a auto_increment, tu utilise une colonne de type int, que tu incrementeras toi meme, tu pourrais contourner ton probleme non ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h27   #14
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Encore faut-il l'incrementer par rapport a une valeur, et mettre une requete count est un peu lourd.
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h29   #15
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Citation:
Envoyé par pop_up
Je ne suis pas sur de bien comprendre mais si au lieu de mettre une colonne a auto_increment, tu utilise une colonne de type int, que tu incrementeras toi meme, tu pourrais contourner ton probleme non ?
Ben, je pourrais, mais comme je disais, je gere pas un site web avec un ajout tous les deux mois, mais plutot un paté avec 30000 ajouts par heure, donc forcément ça fait lourd.
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h47   #16
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Pourquoi de pas utiliser une colonne auto_incrementé en clef primaire alors ?
Tu ne peux pas la changer ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h48   #17
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Bon, si personne ne veut d'autres détails utiles comme le nombre de tables que j'ai créé ou encore mon signe astrologique, j'aimerais savoir comment j'ai pu créer des entrées non clé et autoincrémentées dans certaines tables, alors que dans d'autres mysql (par phpmyadmin) me dit que je n'ai pas le droit ?

Si qqun trouve la bonté en soi de répondre a ma question, je lui en serais reconnaissant
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h52   #18
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Citation:
Envoyé par pop_up
Pourquoi de pas utiliser une colonne auto_incrementé en clef primaire alors ?
Tu ne peux pas la changer ?
Ben comme je disais, une clé primaire, ça prends de la place, surtout si ça peut ne pas etre en clé primaire, comme dans la moitié de mes tables.

Et puis quitte a passer le compteur en primaire, autant y coller tous les champs, comme ça on est sûrs qu'il n'y aura pas de doublons, et que tout sera vraiment unique.

Enfin, quand même, pour éclairer notre cher promo2010 la haut : si on met juste l'id en primaire, et non le triplet {pays, region, ville} alors on ne peut pas garantir l'unicité des entrées.
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 17h04   #19
Membre expérimenté
 
Homme
Consultant informatique
Inscription : septembre 2006
Messages : 568
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2006
Messages : 568
Points : 519
Points : 519
Bon, en bidouillant a la main, sans vraiment savoir ce que je faisais, j'ai réussi a faire ce que je voulais.

Dans phpMyAdmin, quand on voit la structure, y a un pti tableau en bas qui s'appelle indexes.

J'y ai ajouté mon champ, en "unique" et ensuite je l'ai modifié en auto incrément, et maintenant ça marche \o/

Donc pkoi ça marchait tout seul avant, et que maintenant faut que je fasse ça à la main, je ne sais pas, mais bon.
Faiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h40.


 
 
 
 
Partenaires

Hébergement Web