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

PostgreSQL Discussion :

INSERT ... ON DUPLICATE KEY UPDATE


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut INSERT ... ON DUPLICATE KEY UPDATE
    Bonjour,

    Je voudrais savoir s'il est possible de reproduire la commande "INSERT ... ON DUPLICATE KEY" de mySQL avec un moteur PostgreSQL.
    Si oui, comment ?

    En fait, j'ai essayé avec une règle mais ça met à jour toute ma table:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE RULE dup AS ON INSERT TO test_duplicate_key WHERE (new.no_key IN (SELECT DISTINCT test_duplicate_key.no_key FROM test_duplicate_key ORDER BY test_duplicate_key.no_key)) DO INSTEAD UPDATE test_duplicate_key SET lib_key = 'test de maj réussi'::text;
    Je n'arrive pas à spécifier dans ma règle que l'update doit se faire uniquement pour la no_key à insérer et pas pour toutes les no_key.
    Il semble que ma "new.no_key" ne prenne pas qu'une seule valeur.

    Est-ce que quelqu'un peut m'aider ?

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il manque juste un critère dans ton update (au passage, tu peux simplifier la règle, no_key étant une clé primaire, le DISTINCT est inutile ainsi que le tri) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE RULE dup AS ON INSERT TO test_duplicate_key WHERE (new.no_key IN (SELECT test_duplicate_key.no_key FROM test_duplicate_key)) DO INSTEAD UPDATE test_duplicate_key SET lib_key = 'test de maj réussi'::text WHERE test_duplicate_key.no_key = new.no_key;
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut MERCI
    Merci beaucoup GrandFather
    J'ai maintenant tout ce qu'il me faut pour abandonner mySQL ...
    PostgreSQL me voici

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

Discussions similaires

  1. Requête insert + duplicate key update
    Par sfpx dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/05/2012, 07h16
  2. INSERT ON DUPLICATE KEY UPDATE
    Par karl2mil1 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/01/2011, 15h47
  3. Insert, on duplicate key update
    Par knolz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/06/2010, 08h33
  4. INSERT .. ON DUPLICATE KEY UPDATE fait que des INSERT !
    Par umeboshi dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/07/2008, 09h40

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