Forum Programmation.php MySQL : échanger deux valeurs (clé primaire)

Posté par  (site web personnel) .
Étiquettes : aucune
0
13
juin
2005
Bonjour à tous(toutes),

j'aimerais bien savoir comment faire pour échanger deux valeurs de deux lignes différentes d'une table, si les valeurs sont en fait des clés primaires.

Exemple : une table produit avec pour chaque produit un id (clé primaire). J'aimerais échanger (swapper) l'id d'un produit quelconque par l'id d'un autre produit existant de la table.

Voilà. Merci pour vos réponses.

Nicolas.
  • # Insert, Update, Delete

    Posté par  . Évalué à 1.

    Salut, si j'ai bien compris ...
    CREATE TABLE `produit` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `nom` varchar(80) default NULL,
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM;
    
    mysql> select * from produit;
    +----+------+
    | id | nom  |
    +----+------+
    |  1 | p1   |
    |  2 | p2   |
    |  3 | p3   |
    +----+------+
    
    Et pour deux produit d'id n et m, tu veux échanger n et m, ce qui revient à laisser n et m à leur place et à échanger toutes les autres valeurs des deux lignes de données. Moi je ferai un truc du genre:
    • - duplication du premier produit
    • - mettre à jour le premier produit avec les valeurs du second
    • - mettre à jour le second avec les données de la copie
    • - suppression de la copie
    en pseudo-sql, ca donnerai ca:
    • - insert into produit(nom) select nom from produit where id=n;
    • - p = select last_insert_id()
    • - update produit p1, produit p2 set p1.nom=p2.nom where p2.id=m and p1.id=n;
    • - update produit p1, produit p2 set p1.nom=p2.nom where p2.id=p and p1.id=m;
    • - delete from produit where id=p;
    Je pense pas qu'on puisse le faire en moins d'opérations ?!? Mais pourquoi vouloir échanger deux id de produits ? En as-tu vraaaaiiiiiiment besoin ? A+, Jay
  • # Coda ?

    Posté par  . Évalué à 0.

    salut !
    pour répondre partiellement à ton problème/projet, il y a un système de fichier qui fais de la réplication, c'est CODA

    Il permet de faire de la réplication de données sur le réseau mais propose également un mode de reprise après incident (panne d'un des noeuds par exemple) et également une synchronisation des données offline (pour les clients mobiles parexemple)

    http://www.coda.cs.cmu.edu/ljpaper/lj.html

    il y a eu déjà 2 articles la dessus dans linux magazine (mais je ne me rappelle plus les numéros et comme je suis en plein déménagement ....)
    • [^] # Re: Coda ?

      Posté par  . Évalué à 1.

      oups ne pas tenir compte de ce post, me suis trompé de forum !
      ok -> []

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.