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

Langage SQL Discussion :

Insertion dans table avec condition


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut Insertion dans table avec condition
    Bonjour,

    Je voulais savoir s'il était possible de mettre une condition sur le insert pour qu'on ajoute la ligne dans la table que si elle n'existe pas déjà.

    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into tab(...) values(...) where not exist(select * from tab where ...);
    Mais cela ne marche pas.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 109
    Points : 28 434
    Points
    28 434
    Par défaut
    La commande MERGE, qui n'est malheureusement pas implémentée par tous les SGBD, fait ça très bien.

    Sinon, il y a manière de se débrouiller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO matable (colonnes) 
    SELECT  valeurs
    FROM    dual
    WHERE   NOT EXISTS
            (   SELECT  1
                FROM    matable
                WHERE   matable.id  = :id         
            )
    ;
    J'utilise ici la pseudo table DUAL de Oracle ; à toi de convertir en fonction de ton SGBD.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut
    Je ne pense pas que cela marche pour moi. En fait les données que je veux insérer proviennent de variables et non d'une table sql.

    J'avais pensé au MERGE, mais je n'ai rien trouvé de vraiment concluant pour que ça s'adapte à mon cas.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 109
    Points : 28 434
    Points
    28 434
    Par défaut
    Quel est ton SGBD ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut
    J'utilise Postgresql.

    Mais c'est bon en fait, ta solution marche correctement finalement, j'avais un soucis plus "haut" ^^

    Merci al1_24.

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

Discussions similaires

  1. Problème pour insertion dans tables avec jointure
    Par C3DRIC49 dans le forum Langage
    Réponses: 8
    Dernier message: 15/10/2010, 21h52
  2. [MySQL] insertion dans table avec jointure
    Par popoche28 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 06/05/2010, 16h15
  3. Réponses: 4
    Dernier message: 09/06/2009, 14h20
  4. probleme d'insertion dans table avec cle secondaire
    Par pseudobidon57 dans le forum SQL
    Réponses: 1
    Dernier message: 01/06/2007, 13h46
  5. insertion dans table avec plusieurs clés étrangères
    Par philippe281281 dans le forum Administration
    Réponses: 2
    Dernier message: 14/06/2006, 18h35

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