UPDATE mit rekursivem SELECT
Von: Michael Schuerig (michael@schuerig.de) [Profil]
Datum: 25.07.2009 20:02
Message-ID: <h4fhbh$doc$1@newsreader2.netcologne.de>
Followup-to: de.comp.datenbanken.misc
Newsgroup: de.comp.datenbanken.misc
Datum: 25.07.2009 20:02
Message-ID: <h4fhbh$doc$1@newsreader2.netcologne.de>
Followup-to: de.comp.datenbanken.misc
Newsgroup: de.comp.datenbanken.misc
CREATE TABLE numbers ( id serial PRIMARY KEY, value real NOT NULL, parent_id int REFERENCES numbers(id) ); UPDATE numbers AS n SET value (SELECT AVG(children.value) FROM numbers AS children WHERE children.parent_id = n.id); Bei diesem UPDATE-Statement spielt die Reihenfolge der Auswertung eine Rolle. Wenn die neuen Werte einzeln berechnet und unmittelbar zugewiesen werden, gehen diese neuen Werte schon in die Berechnung der anschließend berechneten Werte ein. Wünschenswert wäre natürlich, wenn Abarbeitung in zwei Schritte getrennt würden, also zuerst Berechnung aller neuen Werte, dann deren Zuweisung. Dieses Verhalten kann ich natürlich einfach erzwingen, indem ich die neuen Werte zunächst in ein temporäres Attribut schreibe und dieses im zweiten Schritt in value kopiere. Sagt der SQL-Standard etwas darüber aus, welches Verhalten korrekt ist? Was tun die üblichen Verdächtigen (MySQL, PostgreSQL, Oracle, ...)? Michael -- Michael Schuerig mailto:michael@schuerig.de http://www.schuerig.de/michael/[ Auf dieses Posting antworten ]
Antworten
- Dieter Nöth (25.07.2009 21:59)
- Michael Schuerig (25.07.2009 23:35)
- Dieter Nöth (26.07.2009 00:16)
- Michael Schuerig (26.07.2009 01:40)
- Dieter Nöth (26.07.2009 11:13)
- Claus Reibenstein (26.07.2009 12:35)
- Michael Schuerig (26.07.2009 14:28)
- Claus Reibenstein (26.07.2009 16:43)
- Claus Reibenstein (26.07.2009 12:29)
- Bernd Eckenfels (26.07.2009 12:34)
- Claus Reibenstein (26.07.2009 12:58)
- Bernd Eckenfels (26.07.2009 13:52)
- Claus Reibenstein (26.07.2009 16:46)
- Dieter Nöth (26.07.2009 19:49)
- Dieter Nöth (26.07.2009 21:19)
- Claus Reibenstein (27.07.2009 15:59)
- Torsten Schneider (27.07.2009 16:10)
- Dominik Echterbruch (27.07.2009 17:39)
- Harald Fuchs (27.07.2009 19:02)
