<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Moin Moin!<br>
<br>
Ich habe eine Tabelle 'nummernkreise'. die lediglich aus den Feldern
'id', 'name' und 'wert' besteht. <br>
<br>
<font face="monospace"><font face="Courier 10 Pitch">id name
wert<br>
1 RechnungsNr 4711<br>
2 AuftragsNr 5881</font><br>
</font><br>
Insgesamt gibt es in dieser Tabelle nur so etwa 20 Datensaetze.<br>
<br>
Wird jetzt zum Beispiel eine neue Rechnung erstellt, dann holt sich
mein Programm die aktuelle Rechnungsnummer aus der Tabelle, erhoeht
diese um 1 und schreibt den neuen Wert fuer die naechste Rechnung in
die Datenbank. Das faellt jetzt sicherlich unter die Rubrik 'Mit
Kanonen auf Spatzen' schiessen, aber es geht mir ums Prinzip.<br>
<br>
Da ich unbedingt vermeiden will, dass der Wert zwischen einem SELECT
und einem anschliessenden Update zwsichenzeitlich in der Datenbank
geaendert wurde, habe ich mich zu folgender Abfrage entschlossen:<br>
<br>
UPDATE nummernkreise SET wert = wert+1 WHERE name = 'Angebot'
RETURNING wert;<br>
<br>
Das klappt auch einwandfrei. Dennoch mal die Frage an euch, ist
diese Query so in Ordnung oder wuerdet ihr das anders loesen?<br>
<br>
Ich habe leider zu viele Jahre mit MySQL gearbeitet, wo man sich
derartige Gedanken halt eher nicht macht solange es denn
funktioniert oder zu funktionieren scheint. Und nachdem ich Monate
gebraucht habe meine Software um PostgreSQL zu erweitern - was
inzwischen auch gut laeuft - opfere ich jetzt ein paar Monate mehr,
um MySQL ganz rauszuwerfen und bei der Gelegenheit auch meine
Queries zu optimieren.<br>
<br>
Falls es wichtig ist, ich programmiere unter Linux und verwende
aktuell PostgreSQL 9.2.<br>
<br>
Gruss<br>
<br>
Guenther<br>
<pre class="moz-signature" cols="72">--
DavaoSOFT, the home of ERPel
ERPel, das deutsche Warenwirtschaftssystem fuer LINUX
<a class="moz-txt-link-freetext" href="http://www.davaosoft.com">http://www.davaosoft.com</a></pre>
</body>
</html>