Problème d'insertion/update avec une clé étrangère

[Résolu/Fermé]
Signaler
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
-
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
-
Bonjour,

Je n'arrive pas insérer ou modifier une donnée d'une colonne servant de clé étrangère, même avec ON DUPLICATE KEY UPDATE.

Savez-vous comment faire ?

Merci de vos réponses.

1 réponse

Messages postés
16880
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 septembre 2021
901
bonjour, peux-tu partager ce que tu fais, la définition de tes tables, et le message d'erreur que tu obtiens?
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
1
J'ai fais une table avatar parce que ça m'a sembler représenter une entité à part entière. Pour fusionner les tables avatar et user j'y réfléchis.

Ce que j'avais oublié de préciser c'est que pour insérer la clé primaire de avatar dans id_dbassobdm_avatar de la table user.

Voila les requêtes :
INSERT INTO `dbassobdm_avatar`(`path_avatar`, `id_dbassobdm_user`) VALUES (:path_avatar, :id)
UPDATE `dbassobdm_user` SET `id_dbassobdm_avatar` = (SELECT `id` FROM `dbassobdm_avatar` WHERE `id_dbassobdm_user` = :id)
Messages postés
16880
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 septembre 2021
901 >
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020

et tu as une relation de 1 à 1 entre user et avatar? je ne vois toujours pas l’intérêt d'avoir une clé dans les deux directions. je suggère de laisser tomber id_dbassobdm_avatar dans la table user.
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
1
Je pense que je vais faire ça.
Par curiosité, comment tu t'y prend pour insérer la valeur d'une clé primaire d'une entrée d'une table dans une autre table ?
Messages postés
16880
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 septembre 2021
901 >
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020

pour insérer la valeur d'une clé primaire d'une entrée d'une table dans une autre table, je ferais comme toi, si je connais l'id du user:
INSERT INTO `dbassobdm_avatar`(`path_avatar`, `id_dbassobdm_user`) 
      VALUES (:path_avatar, :id)

ou bien ainsi, si je connais le mail du user:
INSERT INTO `dbassobdm_avatar`(`path_avatar`, `id_dbassobdm_user`) 
      SELECT :path_avatar, `id` FROM `dbassobdm_avatar` 
            WHERE mail = :mail
Messages postés
55
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
20 avril 2020
1
Merci pour ton aide