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

Requêtes MySQL Discussion :

Fusion de Insert et Replace


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut Fusion de Insert et Replace
    Bonjour,

    Je m'explique j'ai une table appelé "subject_view" qui permet de savoir quand un utilisateur est venu voir un sujet dans une sorte de forum.
    Ma table est constitué de
    id_user (INT)
    id_subject (INT)
    date (DATETIME)

    A chaque fois qu'une personne vient voir un sujet je fais un
    "Select" pour savoir si la personne est déjà passé.
    SI c'est le cas je fais un "Update" dans le cas contraire un "Insert".

    Pour améliorer la chose j'ai voulu commencer par un "Update" et utiliser "mysql_affected_rows()" pour savoir si il y a eu des modifications et dans le cas contraire faire un "Insert". Oui mais voilà "mysql_affected_rows()" renvoie de temps en temps un résultat erroné ce qui me rajoute des "Insert" lorsqu'il y en a pas besoin.

    J'ai louché un peu du côté du "Replace Into ..." mais là je bloque.
    Si quelqu'un a une idée ça m'aiderait bien.
    dans ma table "subject_view" il n'y a pas un seul valeur unique mais deux.
    id_user et id_subject. Il ne doit y avoir qu'une seul fois l'information pour l'utilisateur Trucmuche ET le sujet Machin.

    Merci d'avance
    Thy

  2. #2
    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
    Je te conseillle d'utilister un INSERT... ON DUPLICATE KEY :
    INSERT

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    Je te conseillle d'utilister un INSERT... ON DUPLICATE KEY :
    INSERT
    Merci pour vortre reponse. J'ai essayé d'utilisé insert On Duplicate key mais j'ai un souci
    je fais ça comme ça :
    INSERT INTO subject_view (id_source,id_user) VALUES (1,2)
    ON DUPLICATE KEY UPDATE date$=now();

    une idée pourquoi ça ne marche ?

  4. #4
    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
    Essaye cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO subject_view (id_source, id_user, date) VALUES (1, 2, now())
    ON DUPLICATE KEY UPDATE date = VALUES(date);
    Pour que ça fonctionne, il faut obligatoirement que le couple (id_source, id_user) forme un clé primaire !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    Essaye cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO subject_view (id_source, id_user, date) VALUES (1, 2, now())
    ON DUPLICATE KEY UPDATE date = VALUES(date);
    Pour que ça fonctionne, il faut obligatoirement que le couple (id_source, id_user) forme un clé primaire !
    Merci ça marche parfaitement !

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

Discussions similaires

  1. Réponses: 50
    Dernier message: 12/06/2014, 14h48
  2. Insert or replace
    Par Christian_Bale dans le forum SAS Base
    Réponses: 3
    Dernier message: 11/03/2014, 10h21
  3. Lequel est plus rapide? INSERT ou REPLACE?
    Par aiss57 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/06/2009, 16h44
  4. automatisation d'un insert ou replace
    Par stelsej dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/05/2007, 20h08

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