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 :

update si existe, insert sinon


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut update si existe, insert sinon
    Bonjour à tous

    Voila Je voudrais insérer un enregistrement dans ma table 'CLIENT'. Cette insertion est conditionnée par le fait que l'element existe déja dans la table.

    Je voudrais donc faire un truc du genre :

    if exists (select * from CLIENT where id_client = xxxx)
    update
    sinon
    insert

    Voila, j'espère avoir été clair
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Quel est ton SGBD ?
    Sur Oracle, la commande MERGE sert exactement à faire ça.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Il te suffit d'avoir un table de travail d'une seule ligne, de contenu indifférent (telle que DUAL dans Oracle)
    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
    UPDATE  matable
        SET colonne = 'valeur'
    WHERE   id_table = 'id_maj'
    ;
    INSERT INTO matable
        (   id_table
        ,   colonne
        )
    SELECT  'id_maj'
        ,   'valeur'
    FROM    table_d_une_seule_ligne
    WHERE   NOT EXISTS
            (   SELECT  1
                FROM    matable
                WHERE   id_table = 'id_maj'
            )       
    ;
    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Oui désolé, c'est un oubli. Le SGBD utilisé est Oracle

    En tout cas, merci pour les réponses, je vois ça tout de suite

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

Discussions similaires

  1. [Declencheur] Update dans trigger Insert
    Par gilder89 dans le forum Développement
    Réponses: 2
    Dernier message: 25/05/2007, 10h30
  2. [Oracle] combiner un update et un insert
    Par Pakkaï dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/08/2006, 11h39
  3. Tester existance répertoire, sinon le créer
    Par sunvialley dans le forum Access
    Réponses: 2
    Dernier message: 11/07/2006, 11h07
  4. Problème d'Update et D'Insert
    Par domux dans le forum JDBC
    Réponses: 6
    Dernier message: 10/07/2006, 11h31
  5. Impossibilité de faire un update ou un insert
    Par nazimb dans le forum ASP.NET
    Réponses: 13
    Dernier message: 09/03/2006, 17h27

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