Wert in einer Tabelle fortschreiben.
Guenther Boelter <[email protected]> Thu, 09 Jan 2014 20:18:11 +0800
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <[email protected]> |
Moin Moin! Ich habe eine Tabelle 'nummernkreise'. die lediglich aus den Feldern 'id', 'name' und 'wert' besteht. id name wert 1 RechnungsNr 4711 2 AuftragsNr 5881 Insgesamt gibt es in dieser Tabelle nur so etwa 20 Datensaetze. 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. 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: UPDATE nummernkreise SET wert = wert+1 WHERE name = 'Angebot' RETURNING wert; Das klappt auch einwandfrei. Dennoch mal die Frage an euch, ist diese Query so in Ordnung oder wuerdet ihr das anders loesen? 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. Falls es wichtig ist, ich programmiere unter Linux und verwende aktuell PostgreSQL 9.2. Gruss Guenther -- DavaoSOFT, the home of ERPel ERPel, das deutsche Warenwirtschaftssystem fuer LINUX http://www.davaosoft.com