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.