changement d'une clé

Eléphant du PHP | 148 Messages

07 sept. 2005, 12:26

bonjour,
j'aimerais savoir si il est possible de changer la valeur d'une clé en gardant bien entendu toutes les infos qui dépendent de cette clé

en gros vous avez robert et toutes ces infos mais ce n'etait aps robert mais roberta

en utilisant un set je ne vois pas comment faire pour changer la clé et dire de garder les infos de l'anciennne valeur de cette clé
merci de bie nvouloir m'aider

Mammouth du PHP | 19672 Messages

07 sept. 2005, 12:50

Si cette clé sert de référence dans d'autres tables en clé étrangère, il faudra aussi aller les mettre à jour. Ce qui signifie que ce n,est pas une bonne idée d'utiliser un champ contenant une donnée comme clé primaire et il vaut mieux avoir un champ indépendant en INT Auto_increment. Tu devrais quand même pouvoir mettre la clé à jour avec une requête UPDATE.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 91 Messages

07 sept. 2005, 13:12

Oui c'est possible techniquement. Certain SGBDR ont même des commandes de type UPDATE CASCADE qui permette de répercutter une modification d'une PK sur ses FK.

Si tu n'as pas cette commande, il faut tout faire à la main (sans rien oublier et dans le bon ordre et en espérant que le SGBDR ne rende pas l'ame à ce moment précis .....)

D'un point de vue pratique et avec qqs. années d'expérience ... non, il ne faut pas, non il ne faut vraiement pas .... c'est vraiment la galére surtout si cette opération doit être fait de façon trés réguliére. Préféres l'utilisation de clé alternative.
Modifié en dernier par Augure le 07 sept. 2005, 13:15, modifié 1 fois.

Eléphant du PHP | 148 Messages

07 sept. 2005, 13:14

je veux bien vous croire que c'était aps très malin mais maintenant c'est fait et le programme est trop long pour pouvoir le changer
je n'arrive aps a le faire avec la commande set
et lorsque je le fait directement dans easyphp pour voir la commande
il me met ca:

Code : Tout sélectionner

SELECT * FROM `formulaire` WHERE CONVERT( `nom` USING utf8 ) = 'fgdsdfgsdgd' AND CONVERT( `prenom` USING utf8 ) = 'comment';
or 'fgdsdfgsdgd' est l'ancien nom
et 'comment' est l'ancien prenom

les nouvelles valeurs n'apparraissent pas et pourtant elle passe bien
du coup je ne sais pas comment faire
merci

Eléphant du PHP | 91 Messages

07 sept. 2005, 13:20

C'est une commande Select que tu nous montre, pas de mise à jour.

Cela devrait ressembler à

Code : Tout sélectionner

UPDATE formulaire SET nom='nouveau non' ,prenom='nouveau prenom' WHERE nom='ancien non' AND prenom='ancien prenom'
Il faut aussi faire les mises à jour sur les table qui référence formulaire.

Eléphant du PHP | 148 Messages

07 sept. 2005, 14:09

ok merci c'est bon tout roule apparemment j'avais essayé de faire comme tu me l'a di mais je devais avoir fait une erreur
ca marche nickel merci bcp