Forum: PC-Programmierung MySql -> PostgreSql: Probleme beim INSERT


von Mehmet K. (mkmk)


Lesenswert?

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.

von Troll (Gast)


Lesenswert?

Tipp: ON DUPLICATE KEY statt dem if.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.