Postgres 9.5+: UPSERT, um die Anzahl der aktualisierten und eingefügten Zeilen zurückzugeben

9

Ich bekomme das kanonische Beispiel:

%Vor%

Aber jetzt muss ich auch wissen:

  1. Wie viele Zeilen wurden eingefügt
  2. Wie viele Zeilen wurden aktualisiert, weil
  3. vorhanden ist
  4. Wie viele Zeilen konnten aufgrund von Einschränkungen nicht eingefügt werden
  5. Wenn die Einschränkung für die letzte Zeile nicht eingehalten wird, werden die vorherigen eingefügten / aktualisierten Zeilen in der DB beibehalten?
sscarduzio 09.08.2016, 12:48
quelle

1 Antwort

5

Ich weiß nicht, wie sonst Sie verstehen können, welches Ereignis aufgetreten ist. Sie sollten sich den Wert von xmax ansehen, wenn xmax = 0 bedeutet, dass Zeile eingefügt wurde, anderer Wert xmax dort Zeile wurde aktualisiert.

Ich habe schlecht Englisch und ich werde versuchen, das Beispiel zu zeigen.

%Vor%

EINFÜGEN

%Vor%

Wenn Sie versuchen, ein Duplikat einzufügen:

%Vor%

Das Ergebnis kann so verarbeitet werden:
Einfügen von 1 neuen und 1 doppelten Zeilen

%Vor%

siehe 5.4. Systemspalten und MVCC

Sehr interessant, wie das Problem besser gelöst werden kann

    
Rhim 09.08.2016 19:09
quelle

Tags und Links