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

SQL Oracle Discussion :

Insert or Update sans table de référence


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut Insert or Update sans table de référence
    Bonjour,

    Je dois faire un insert or update et je suis bloqué parce que je ne peux pas utiliser MERGE (enfin je ne crois pas). En effet, les valeurs que je dois insérer/updater sont issues d'un traitement externe sous java. Comment puis-je procéder, existe t'il un moyen de "contourner" le USING de MERGE?

    LDPDC

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Peux tu préciser exactement ce que tu veux faire ?

    Quel format la source et qu'est ce que tu veux obtenir de ca ?

    Quelle version Oracle tu as ?

  3. #3
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Bonjour,

    Ce n'est peut-être pas la meilleure solution, je ne connais pas le reste de ton application, mais tu peux "contourner" ce problème en faisant dans la clause USING un SELECT de tes valeurs FROM DUAL. Quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MERGE
      INTO ma_table t
      USING (SELECT 'a' col1, 'b' col2 FROM dual) src
      ON (src.col1 = t.col1)
    WHEN MATCHED THEN
      UPDATE SET t.col2 = src.col2
    WHEN NOT MATCHED THEN
      INSERT (t.col1, t.col2)
      VALUES (src.col1, src.col2)
    ;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    Citation Envoyé par xdescamp Voir le message
    Bonjour,

    Ce n'est peut-être pas la meilleure solution, je ne connais pas le reste de ton application, mais tu peux "contourner" ce problème en faisant dans la clause USING un SELECT de tes valeurs FROM DUAL.
    C'est tout à fait ce dont j'avais besoin, merci beaucoup.

    @Fastora: au cas où il existerait une solution plus "élégante" je suis sous g11, ma source est une collections de variables java et j'execute mon instruction SQL à travers un prepared statement. La concatenation qui mène à la requête est donc libre.
    Ce que je veux faire exactement c'est donc insérer ou updater mes données en fonction de la présence ou non d'une clef dans la table de destination, mais avec la restriction que je ne dispose pas d'une table source, juste des lignes à écrire/mettre à jour.
    Ceci dit le select from DUAL paraît tellement adapté que je vois mal ce qu'il pourrait y avoir de mieux.

    Merci, LDPDC

  5. #5
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Non pas mieux

    Je pensais a DUAL en posant la question tout a l'heure ...

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

Discussions similaires

  1. Insert ou update sur table mysql
    Par moonshine972 dans le forum C#
    Réponses: 6
    Dernier message: 05/04/2011, 10h28
  2. Réponses: 2
    Dernier message: 16/06/2008, 23h42
  3. Comment rafraichir les tables directement après un INSERT ou UPDATE
    Par forzaxelah dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/07/2006, 15h01
  4. ERROR: insert or update on table "ecole" violate
    Par doulel dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/04/2006, 21h24
  5. ERROR:insert or update on table "ecol" violates fo
    Par doulel dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/04/2006, 10h19

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