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

 MySQL Discussion :

Mysql requete Exist enregistrement


Sujet :

MySQL

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Mysql requete Exist enregistrement
    Bonjour à tous,


    je voudrais savoir au niveau mysql si il est possible de tester un enregistrement?

    Mon but serait de vérifier si un enregistrement existe déjà avec la valeur du code client, si oui cela UPDATE les informations de ce clients, sinon cela créer (INSERT) le client.

    Existe-il un exemple/code qui permettrai arrivée à cela ?

    merci d'avance pour vos retours

    guigui69

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 137
    Par défaut
    En l'absence d'une commande MERGE dans MySQL, tu es contraint d'exécuter deux requêtes, la première en mise à jour, la seconde en insertion.
    On suppose bien sûr que la table à mettre à jour possède un identifiant unique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    update  matable
    set     col1    = 'val1'
        ,   col2    = 'val2'
    where   id      = 'valeur_id'
    ;
    insert into matable
        (   id
        ,   col1
        ,   col2
        )
    select  'valeur_id'
        ,   'val1'
        ,   'val2'
    from    dual
    where   not exists
            (   select  null
                from    matable
                where   id  = 'valeur_id'
            )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Re-bonjour,


    je pense avoir trouvé la fonction cela s'appel "DUPLICATE KEY UPDATE" au niveau mysql qui permettrai de faire ca.

    Par contre je bloque sur la mise en forme.

    Ma table Mysql
    id_bdc_client
    id_client_ICARDMS
    code_client_ICARDMS
    civilite varchar(32)
    prenom varchar(32)
    nom varchar(32)
    code_postal int(11)
    adresse varchar(64)
    .....
    .....
    id_bdc_client => id de ma table qui s’incrémente tout seul.

    id_client_ICARDMS et code_client_ICARDMS ==> les 2 champs que je récupère de la base SQL serveur.

    Je bloque pour mettre en forme la requête pour lui dire tu insert les valeurs seulement si id_client_ICARDMS,code_client_ICARDMS n'existe pas sinon tu réalise un UPDATE de champs.

    Je sais pas si c'est possible sur un autre champs que la clé primaire

    guigui69

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 085
    Par défaut
    Salut guigui69.

    Vous avez raison, le "duplicate key update" fonctionne parfaitement , mais il y a encore plus simple, faire un replace.
    Cela fonctionne comme le "insert", mais si la ligne existe déjà, mysql procède à un delete suivi à un insert.
    --> à lire : https://dev.mysql.com/doc/refman/5.7/en/replace.html

    Attention à ne pas confondre avec la fonction replace.

    @+

Discussions similaires

  1. mySql requete existence d'un article dans une table
    Par celinette2608 dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/07/2011, 18h30
  2. [MySQL] Requete et enregistrement PHP MYSQL
    Par afroweb dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/01/2009, 15h54
  3. [MySQL] Sous requête EXISTS
    Par Legenyes dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 13h04
  4. [mySQL]Requete qui prend 100 % du CPU et n'aboutit pas
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 20
    Dernier message: 12/10/2005, 10h36
  5. Réponses: 19
    Dernier message: 01/04/2004, 15h41

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