dedlfix: Prüfen ob Änderung besteht vor UPDATE

Beitrag lesen

Hi!

Ich gehe mal von MySQL aus. Es ist immer besser, auch bei solch anscheinend generischen Fragen das verwendete DBMS anzugeben, damit man dessen Eigenheiten berücksichtigen kann. Auch ob ein DB-Access-Layer verwendet wird ist wichtig, denn der entscheidet manchmal über die Nutzbarkeit spezieller Features des jeweiligen DBMS.

bevor ich ein UPDATE in der Datenbank ausführe (der SQL wurde per PHP dynamisch zusammengesetzt), möchte ich prüfen, ob der Update überhaupt eien Änderung in der Datenbank bewirkt, ergo ob der hinzuzufügende Wert den bereits existierenden Wert deckt.

Ohne eine Kommunikation mit dem DBMS wirst du das nicht rausfinden können, denn zwischen Lesen und Schreiben des einen Benutzers können andere Vorgänge die Daten geändert haben. Der Aufwand der Kommunikation bleibt also in jedem Fall.

Wie kann ich das am performantesten und flexibelsten machen? Die Anzahl der Felder sind variabel. Außerdem möchte ich nicht unbedingt für jeden UPDATE zuerst einen SELECT auszuführen müssen um auf Änderungen prüfen zu können.

MySQL ist so klug und verzichtet von selbst auf den Schreibvorgang, wenn es nichts zu ändern gibt.

Siehe mysql_affected_rows() im Abschnitt Return Values.
Siehe mysqli::real_connect() Flag MYSQLI_CLIENT_FOUND_ROWS.

Wichtiger als ein UPDATE einzusparen, ist jedoch, sich über konkurrierenden Änderungen Gedanken zu machen.

Lo!