IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

update = insert


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut update = insert
    Bonjour j'ai cherché dans les tuto mais je suis chez un ami qui a une disque dur de 4go dc je ne peux telecharger l'integralité des cours et ca n'est pas dans la faq :S

    Ma question est : j'ai une table, et à chaque id correspond entre autre une valeur. Dans ma fonction, je souhaite :
    -si il n'y a pas d'entrée pour tel id, en creer une
    -si il y en a une, la mettre à jour, qu'il n'y ait pas de doublons en tout cas!

    voila c'est bete, mais insert insere et update met à jour (il faut donc que ca existe).
    Comment faire ca en une requete proprement plz?

  2. #2
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    Bonjour,

    si ta version de mysql est supérieur ou égale a la 4.1.0, tu peux utiliser la clause on duplicate key insert

  3. #3
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    merci! c'est exactement ce que je cherchais, je viens de mieux chercher sur le net et ma requete finirait comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO ma_table
    SET son_texte='le nouveaux truc', user_id='id du mec de la table originale'
    ON DUPLICATE KEY UPDATE son_texte='le nouveaux truc';
    si je ne me trompe pas
    (sachant que ma table contient d'autres champs plus ou moins importants)

    là ca fera que pour ma_table, à la ligne de l'id du mec, si elle existe pas elle est créé, si elle existe seul mon champ "son_texte" est mis à jour sans toucher aux autres infos de la ligne (par exemple "ma_table" contient la couleur de ses yeux, qui n'est pas importante, mais que je ne souhaiterais pas perdre si je met à jour "son_texte")

    Je met le post en "résolu" si j'ai faux quelque part dit le moi

    merci encore!

  4. #4
    Membre averti Avatar de Shinn77
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO ma_table
    (son_texte, user_id) VALUES('le nouveaux truc', 4) ON DUPLICATE KEY UPDATE son_texte='le nouveaux truc';
    non?

  5. #5
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    ça revient au même il me semble non?

  6. #6
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    Erf ca ne marche pas en fait
    Vu que le champ text change, ca en insert un nouveau à chaque fois :S

    Et j'ai essayé avec la methode de shinn77, ca ne change rien, et essayé en changeant les champs de position (user_id en premier) mais inutile en fait

    suis-je condamné à effectuer plusieurs reuquete et les analyser avec php? ((

  7. #7
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    Apres avoir continué de chercher, mon erreur est du au fait que je n'utilise betement pas une clé unique dans ma requete originale.
    Comme de toute maniere il faudrait que je la cherche je suis obligé de faire une requete en plus, je vais donc me cantoner à un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * WHERE user_id=XXX
    puis un test avec "if (mysql_num_rows($res))" sur le resultat de ma requete (en php)
    et si ca passe un update
    Si ca foire un insert

    merci quand meme ^^

  8. #8
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Pour que ça fonctionne, il faut que user_id soit défini comme clé primaire sur ta table !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO ma_table
    (son_texte, user_id) VALUES('le nouveaux truc', 4) ON DUPLICATE KEY UPDATE son_texte=value(son_texte);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. journalisation des updates, inserts sur une table
    Par philou28 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2007, 16h07
  2. requete sql update/insert
    Par snetechen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/04/2007, 17h29
  3. UPDATE/INSERT sur des colonnes
    Par baltagi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2007, 17h54
  4. [trigger] update inserted?
    Par cosminutza dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/06/2005, 09h37
  5. Evenement sur UPDATE, INSERT, DELETE
    Par papouAlain dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/12/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo