MySql -> PostgreSql: Probleme beim INSERT

OP #2642434
Servus allerseits

Ich bin dabei die Datenbank einer meiner Applikationen von MySQL auf 
PostgreSql umzustellen.
Dabei bin ich auf ein Problem gestossen und weiss nicht, ob der von mir 
eingeschlagene Weg der richtige ist.
Beim MySQL konnte ich wie folgt ein Insert ausführen:

Pseudo-Code:
1
if insert
2
  Insert Into TableName Set id_nr = DEFAULT, 
3
else
4
  Update TableName set
5
endif
6
LName = "xyz", 
7
FName = "abc",
8
etc.
9

10
if !insert
11
  Where id_nr = nnn
12
endif

Hatte den Vorteil, dass ich Insert und Update in derselben Funktion 
erschlagen konnte.
PostgreSql meckert aber bei einem Insert.
Dort habe ich folgenden Umweg eingeschlagen:

Pseudo-Code:
1
if insert
2
  BEGIN;
3
  Insert Into TableName DEFAULT VALUES;
4
  if error
5
    ROLLBACK;
6
    return
7
  endif
8
  nId_nr = last_idnr_of(TableName)
9
endif
10

11
Update TableName Set 
12
LName = "xyz", 
13
FName = "abc",
14
etc.
15
where id_nr = nId_nr
16

17
if insert 
18
  if !error
19
    COMMIT;
20
  else
21
    ROLLBACK;
22
  endif
23
endif
Funktioniert zwar, kommt mir aber irgendwie nicht so ganz koscher vor.
Waere für ein paar Kommentare sehr dankbar.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.