Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Duplicate key update

  1. #11
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Wenn Du 9.1 verwendest, geht das auch mit einem einzigen SQL Statement:

    Code:
    WITH new_values (a,b,c,d,e) as (
      values 
         (1, 2, 3, 4, 5)
    
    ),
    upsert as
    ( 
        UPDATE mytable m 
            set m.e = nv.e
        FROM new_values nv
        WHERE m.a = nv.a
          AND m.b = nv.b
        RETURNING m.*
    )
    INSERT INTO mytable (a,b,c,d,e)
    SELECT a,b,c,d,e
    FROM new_values
    WHERE NOT EXISTS (SELECT 1 
                      FROM upsert up 
                      WHERE up.a = new_values.a
                        AND up.b = new_values.b)
    Wenn Du mehr als einen Datensatz ändern/einfügen willst, dann häng die weiteren Werte einfach in den "VALUES" Teil:

    Code:
    WITH new_values (a,b,c,d,e) as (
      values 
         (1, 2, 3, 4, 5),
         (10,20,30,40,50),
         (100,200,300,400,500)
    ),
    ....
    gefällt mir ;-)

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  2. #12
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    gefällt mir ;-)
    Ist inspiriert von diesem Blog hier:
    Upserting via Writeable CTE - zillablog

    Ich habe es nur erweitert um auch mehr als einen Datensatz angeben zu können.
    Ich denke, näher kommt man an ein echtes MERGE Statement momentan nicht ran (aber das kommt ja so wie es aussieht in 9.2 )
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Problem ERROR: duplicate key value violates unique constraint
    Von Hannes23 im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 15.12.2011, 14:43
  2. Insert, Update Trigger der Update ausführt
    Von Tentoxa im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 21.06.2010, 11:31
  3. Inserets duplicate
    Von ThoHei im Forum SQL
    Antworten: 6
    Letzter Beitrag: 19.02.2010, 14:08
  4. Aufruf von Update vor einem Update auf gleiche Tabelle
    Von Heisp im Forum Trigger und Funktionen
    Antworten: 3
    Letzter Beitrag: 26.06.2007, 14:21
  5. on duplicate key
    Von Steve9825679 im Forum SQL
    Antworten: 2
    Letzter Beitrag: 29.05.2007, 16:29

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum