auto_increment dans PhpMyAdmin
Dernière réponse : dans Programmation
Bonjour.
Voila g un probleme ss phpmyadmin.
G créé 2 tables, avec chacune comme clé primaire un numéro en auto_increment.
Le pb , c kil ne commencent pas a partir de 1 et kil ne sont pas les meme dans les 2 tables.
Or g besoin de faire des jointures ensuite en disant que numconc = numpres mais elles n'ont aucun numéro en commun.
Comment faire?
Voila g un probleme ss phpmyadmin.
G créé 2 tables, avec chacune comme clé primaire un numéro en auto_increment.
Le pb , c kil ne commencent pas a partir de 1 et kil ne sont pas les meme dans les 2 tables.
Or g besoin de faire des jointures ensuite en disant que numconc = numpres mais elles n'ont aucun numéro en commun.
Comment faire?
Autres pages sur : auto increment phpmyadmin
Lassé par la pub ? Créez un compte
Citation :
Bonjour.Voila g un probleme ss phpmyadmin.
G créé 2 tables, avec chacune comme clé primaire un numéro en auto_increment.
Le pb , c kil ne commencent pas a partir de 1 et kil ne sont pas les meme dans les 2 tables.
Or g besoin de faire des jointures ensuite en disant que numconc = numpres mais elles n'ont aucun numéro en commun.
Comment faire?
Salut, rien compris. Tu peux nous réexpliquer en Français? (et pas sms)
Justement c'est ce que j'ai fait:
- dans la définition de la table, j'ai mis auto_increment sans valeur par défaut,
-dans mes "insert into", il n'y a aucune valeur pour ces numéros.
Est-ce que cela viendrait du fait que j'ai effacé plusieurs fois mes tables et que je les ai recréées par la suite, et que le numéro se "souvient " de là où il était arreté dans la table précédente et qu'il recommence à partir de là?
Dans ce cas, est-ce que cela veut dire qu'il faut qur je recommence ma base de données en entier???
- dans la définition de la table, j'ai mis auto_increment sans valeur par défaut,
-dans mes "insert into", il n'y a aucune valeur pour ces numéros.
Est-ce que cela viendrait du fait que j'ai effacé plusieurs fois mes tables et que je les ai recréées par la suite, et que le numéro se "souvient " de là où il était arreté dans la table précédente et qu'il recommence à partir de là?
Dans ce cas, est-ce que cela veut dire qu'il faut qur je recommence ma base de données en entier???
ouais pareil j'ai du mal à saisir ton problème à part que tu as des soucis avec le auto increment... Mais les auto increment ça peut être vite chiant... Ensuite si il ne part pas a 1 c'est parce que il garde en memoire le dernier numéro inséré (il ne gere pas la dépile). Donc si tu regarde le code sql qui te génére il doit avoir cette information.... J'utilise pas easyphp donc je peux pas etre precis mais si t'es un minimum curieux tu devrais trouver
Par contre je comprend pas comment tu gères ta BD et notamment sur tes jointures :confused:
Par contre je comprend pas comment tu gères ta BD et notamment sur tes jointures :confused:
Salut,
Effectivement ta relation entité n'est pas bien gerer, mm tres mal..
Mais pour rester dans ta logique tu peux dans ta premiere table laisser l'auto_increment, puis dans la seconde tu vas inserer toi mm l'indice.
Facile tu utilises la fonction "mysql_insert_id" qui te donne le dernier identifiant generer part Mysql qui dans ton cas devrait etre l'auto_icrement de ta premiere table.
Cordialement S62.
Effectivement ta relation entité n'est pas bien gerer, mm tres mal..
Mais pour rester dans ta logique tu peux dans ta premiere table laisser l'auto_increment, puis dans la seconde tu vas inserer toi mm l'indice.
Facile tu utilises la fonction "mysql_insert_id" qui te donne le dernier identifiant generer part Mysql qui dans ton cas devrait etre l'auto_icrement de ta premiere table.
Cordialement S62.
En fait, ces numéros en auto-increment me servent juste de clé primaire dans 3 de mes tables.
La quatrième est ma table "principale", son identifiant est un numéro que j'ai insérer.
Ce numéro doit servir de clé étrangère dans les autres tables.
Mais je n'arrive pas à créer de clés étrangères!
SVP aidez moi, c urgent!!
Merc. :-)
La quatrième est ma table "principale", son identifiant est un numéro que j'ai insérer.
Ce numéro doit servir de clé étrangère dans les autres tables.
Mais je n'arrive pas à créer de clés étrangères!
SVP aidez moi, c urgent!!
Merc. :-)
Alter table nom_table constraint nom_contrainte FOREIGN KEY Champ
REFERENCES Table_Pointée(Champ_Clé_Primaire)
aide
REFERENCES Table_Pointée(Champ_Clé_Primaire)
aide
Personnelement, je n'utilise jamais les auto_increment, dans mon code, je récupere l'ID le plus grand de la table, j'ajoute 1 et voila un auto increment perso qui fonctionne très bien, on pourrait pousser encore plus loin en décalant tous les ID a chaque supression pour ne pas avoir d'ID inutilisés mais la ça devient unn peu compilqué.
Citation :
imer a écrit :
Alter table nom_table constraint nom_contrainte FOREIGN KEY Champ
REFERENCES Table_Pointée(Champ_Clé_Primaire)
Je suis vraiment désolée mais pouvez me dire étape par étape ce qu'il faut faire?
1- j'ai ajoutée un champ dans ma table qui est censé être ma clé étrangère;
2- je pense que j'ai ratée des étapes...
3- Quand je fais la requête de création de la clé étrangère il me dit:
#1216 - Impossible d'ajouter un enregistrement fils : une constrainte externe l'emp裨e
Enfin, s'il vous plait, dites moi tout ce qu'il faut faire!
:confused:
ouais ok faut refaire des révisions:
Admettons que tu aies deux tables A et B (je prends un exemple de ce que tu veux faire si j'ai bien compris sauf que je ne vais pas prendre tes 4 tables):
A peut accepter 0 à N enregistrements de B
B fait référence à 1 et 1 seul enregistrement de A
Traduction en BD:
A à une clé primaire A1;
B à une clé primaire B1 et une clé étrangére B2 qui fait référence à la clé primaire de la table A
nom_table
-------------
|A|
nom_champ
-------------
|A1|
Données
-------------
|1|
|2|
nom_table
-------------
|B|
nom_champ
-------------
|B1|B2|
Données
-------------
|1|1|
|2|1|
|3|2|
Comme tu peux le voir B2 pointe sur A1, et c'est bien entendu ici qu'il faut que tu respectes l'intégrité des données.... Toi tu veux que t'es clés primaires soient des auto increment (A1, et B1), mais B2 ne sera pas en auto increment et pourtant il faut que les jointures soient bonnes....
D'après ce que j'ai pu comprendre tu recuperes des données mais la je peux m'enflammer encore plus que je suis en train de le faire si tu m'en dis pas plus
Admettons que tu aies deux tables A et B (je prends un exemple de ce que tu veux faire si j'ai bien compris sauf que je ne vais pas prendre tes 4 tables):
A peut accepter 0 à N enregistrements de B
B fait référence à 1 et 1 seul enregistrement de A
Traduction en BD:
A à une clé primaire A1;
B à une clé primaire B1 et une clé étrangére B2 qui fait référence à la clé primaire de la table A
nom_table
-------------
|A|
nom_champ
-------------
|A1|
Données
-------------
|1|
|2|
nom_table
-------------
|B|
nom_champ
-------------
|B1|B2|
Données
-------------
|1|1|
|2|1|
|3|2|
Comme tu peux le voir B2 pointe sur A1, et c'est bien entendu ici qu'il faut que tu respectes l'intégrité des données.... Toi tu veux que t'es clés primaires soient des auto increment (A1, et B1), mais B2 ne sera pas en auto increment et pourtant il faut que les jointures soient bonnes....
D'après ce que j'ai pu comprendre tu recuperes des données mais la je peux m'enflammer encore plus que je suis en train de le faire si tu m'en dis pas plus
Lassé par la pub ? Créez un compte