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 :

Insert si l'enregistrement n'existe pas deja


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué Avatar de Joel Pinto Ribeiro
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Points : 145
    Points
    145
    Par défaut Insert si l'enregistrement n'existe pas deja
    Bonjour,

    J'aimerais savoir quelle est la méthode la plus simple et efficace sous mysql pour insérer dans une table en vérifiant que les valeurs insérées n'existent pas déjà (dans ce cas pas d'insertion).

    J'ai fait à l'époque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    insert into ma_table 
    (colonne1,colonne2)
     select 'valeur1','valeur2'
      from ma_table
      where (select count(*) from  ma_table where colonne1='valeur1' and colonne2='valeur2')=0;
    Mais ça me semble lourd, je pense qu'il doit y avoir des fonctions de bases qui permette ça plus simplement.
    (Attention je demande pas la première méthode qui marcherait je cherche vraiment la façon la plus optimisé pour faire cela)

    avec une contrainte d'unicité?

    Merci d'avance.

    Joel
    Jeune ingénieur passionné des technologies Microsoft .NET, ainsi que du partage de connaissances.

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 532
    Points
    3 532
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Quelques chose de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE c=c+1;
    source
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut

    ou un trigger aussi qui permet plus de complexité que on duplicate key qui ne touche que la première colonne citée dans l'insert pour l'unicité
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  4. #4
    Membre habitué Avatar de Joel Pinto Ribeiro
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    Bonjour,

    Quelques chose de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE c=c+1;
    source
    Je vois pas trop en quoi cela répond à mon besoin .
    De ce que j'ai compris le "on duplicate key update" permet de mettre à jour une colonne si deja present ? (Je vois le fonctionnement mais pas le besoin métier qui nécessiterai ce genre de requête) .

    Ensuite le trigger me parait plus lourd que le "insert into ignore" , car il faudrait creer autant de trigger que de tables à vérifier (donc à maintenir cela risque de devenir lourd?) .

    Merci pour les réponses en tout cas .
    Jeune ingénieur passionné des technologies Microsoft .NET, ainsi que du partage de connaissances.

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    il y a aussi la procédure stockée qui permet alors de constituer un api coté sgbd...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/12/2008, 16h23
  2. Réponses: 1
    Dernier message: 12/02/2008, 17h00
  3. Réponses: 3
    Dernier message: 25/01/2008, 10h36
  4. Réponses: 3
    Dernier message: 07/01/2008, 13h02
  5. [MySQL] Boucle et INSERT si la ligne n'existe pas
    Par yazerty dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/09/2007, 12h56

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