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 3

    Und 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ß


Anmelden zum Antworten