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 :

insertion avec doublon


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut insertion avec doublon
    Bonjour,

    J'ai bien regarder ce qu'il y avait sur le forum à propos des insertions et des doublons mais je ne vois pas ce qui correspond a mon besoin

    voila j'ai une table news
    avec 4 champs
    ID_News
    Lib_News
    Actif
    ID_etb

    voila j'ai 3 situation,

    - une qui accepte les doublons et là pas de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO _news (Lib_news,Actif,,ID_etb) 
               VALUES ('".$str."','".$actif."',$etb.")";
    - une autre demande de confimer l'opération en cas de doublon pour un etablissement

    et la dernière refuse les doublons en donnant un avertissement

    bon pour faire cela, pour le moment je fais 2 requetes


    un SELECT COUNT(*) qui vérifie que $str n'est pas dans la base pour un etablissement
    et un INSERT si COUNT(*) = 0

    maintenant j'aimerai savoir si je ne peux pas faire l'economie de la requete select
    merci de votre aide

  2. #2
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Syntaxe de REPLACE
    REPLACE fonctionne exactement comme INSERT, sauf que si une vieille ligne dans la table à la même valeur qu'une nouvelle pour un index UNIQUE ou une PRIMARY KEY, la vielle ligne sera effacée avant que la nouvelle ne soit insérée.

    Pour information il me semble que REPLACE, n'existe pas dans la norme SQL, donc pour la "portabilité" du code ce n'est aps idéal.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    en ce qui concerne le REPLACE, si la valeur de Actif est différent, il va considérer que cette une nouvelle ligne et faire un insert c'est bien cela?

  4. #4
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Je suppose que id_news est votre clef primaire.

    donc replace va regarder si id_news existe, si il existe alors il remplace sinon il insère. Avez-vous un index unique sur votre colonne lib_news ?
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    en fait, je prepare une methode php permettant de gérer les insertion dans différents cas

    voila les differents cas que j'envisage
    - acceptation de doublon , INSERT Normal
    - table avec des clé UNIQUE sur un ou plusieurs champ INSERT IGNORE devrait convnir
    - table avec doublon strict cad que tout les champ de la table sont indentique a l'exception de la clé primaire Pour mysql je prendrais le REPLACE comme vous me l'avez indiquez

    -table avec interdicion de doublon partiel (quelque champ ne doivent pas avoir de doublon comme mon exemple) sans cle unique et la je pense que seule la méthode SELECT COUNT(*) et INSERT/UPDATE peut convenir

    qu'enpensez vous?

  6. #6
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Si j'ai bien compris vos explications, ça me semble correct.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    ok merci bien

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

Discussions similaires

  1. insert avec doublons
    Par loreleï85 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/01/2007, 09h05
  2. [MySQL] Insertion de doublon avec primary key
    Par darkbob dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2006, 16h38
  3. INSERT avec procédure stockée / Clef de type AutoInc
    Par bgdelphi dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/10/2003, 18h30
  4. PB: Insertion de doublon
    Par maxvador dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/09/2003, 12h07
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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