Niko: Welche Einträge wurden bei einer UPDATE-Anweisung geändert?

Beitrag lesen

Hi Vinzenz,

jein.

Ja, Du erhältst alle Datensätze, die potentiell geändert werden.
Nein, Datensätze, die sich nicht ändern, werden nicht geändert (und sollten nicht erfasst werden, was bei der WHERE-Methode der Fall ist).

Und wenn ich einmal vor und einmal nach der Operation ne SELECT-Anfrage mache und die beiden Ergebnisse vergleiche? Theoretisch sollte man damit ermitteln können, welche Datensätze sich geändert haben! Denke nur, dass das evtl. bei vielen geänderten Datensätzen ziemlich Rechenintensiv sein könnte, aber da kenn ich mich nicht so aus, ist jetzt nur ne Spekulation.

Du könntest statt dessen mit einer TIMESTAMP-Spalte arbeiten und deren magisches Verhalten (bei Dir ON UPDATE CURRENT TIMESTAMP) arbeiten. Nach dem Update suchst Du Dir die Datensätze, deren Wert in dieser Spalte im fraglichen Zeitraum liegt.

Bei konkurrierenden Zugriffen könntest Du ein Problem bekommen, die Datensätze sauber zu ermitteln. Wenn derartige Zugriffe kein Thema sind, dann sollte diese Methode es tun.

Und was ist, wenn ich statt nem TIMESTAMP irgendeinen zufällig generierten Schlüssel einsetze? Wenn der lang genug ist dürfte es fast unmöglich sein, dass man zweimal den Gleichen bekommt. Gibt es da ne Möglichkeit wie ON UPDATE CURRENT TIMESTAMP?

Genau aus diesen Gründen hatte ich Dir die sauberere Trigger-Lösung vorgeschlagen. Vielleicht kannst Du Deinen Provider davon überzeugen, auf eine neuere MySQL-Version upzugraden :-)

Ja mal schauen. Hab da jetzt mal ne Anfrage gestellt und warte immernoch auf die Antwort: :)

Zur WHERE Lösung: Das stellt sich jetzt als etwas schwieriger heraus, als ich gehofft hatte. Ich müsste ja einen String aus der Anfrage ausschneiden, nur wenn in der Anfrage mehrmals WHERE vorkommt wirds übel! Hätte da vlt jemand ne Idee?

Lg Niko