Bei update alten Wert nutzen
-
Hallo,
wenn ich eine Tabelle T mit 3 Spalten a, b und c hab, z.B. so
a | b | c
----------
1 2 3Und dann folgendes Update mache
UPDATE T SET b = a, a = 99 WHERE c = 3
ist dann garantiert, dass b = 1 ist?
Oder ist das DB abhängig oder von der SET-Reihenfolge?
-
Hallo,
der SQL-Standard legt fest, dass die Reihenfolge keine Rolle spielen soll, weil immer die alten/vorherigen Werte herangezogen werden sollen. Aber manche Systeme weichen ab, dort ist die Reihenfolge signifikant, MySQL z.B., siehe:
http://dev.mysql.com/doc/refman/5.5/en/update.html
MS SQL Server folgt hier dem Standard, so dass man mit
UPDATE T SET b = a, a = 99 WHERE c = 3
das gewünschte Ergebnis auf beiden Systemen erhalten sollte. Also im Zweifelsfall nachlesen, wie UPDATE realisiert ist.
MfG,
Probe-Nutzer
-
Hey Probe-Nutzer,
Probe-Nutzer schrieb:
Hallo,
weil immer die alten/vorherigen Werte herangezogen werden sollen.Das war sehr hilfreich, Danke.
Auf meiner DB (Sqlite) wird das richtig umgesetzt und wenn das auch das std-Verhalten ist, wird sich daran wohl auch zukünftig nix andern.Danke und Gruß