Moin!
Aha, jetzt kommen wir der Sache näher. Da sich der Wer im Feld "abc" nicht geändert hätte, gab die Rueckmeldung von update auch nur den aktuellen Eintrag raus.
Wenn ich dich so beobachte, habe ich allerdings nicht den Eindruck, du kämst irgendwas näher. :)
Also betroffene Feldänderungen = 1
Das wusst ich bisher auch nicht, dass mysql prüft ob etwas zu ändern ist, dachte wird immer automatisch überschrieben auch wenn gleich.
Das kann man selbst bestimmen. Standardmäßig meldet MySQL nur echte Veränderungen zurück, es kann aber auch alle Datensätze zählen, die insgesamt unter die WHERE-Klausel fallen.
Na gut dann nächster Versuch:
insert into muell (abc)values('xyxy');update muell set abc=last_insert_id();
Das Update setzt in ALLEN Datensätzen der Tabelle die Spalte abc auf den ID-Wert des letzten Inserts. Das kann nicht sein, was du willst. Aber was willst du denn eigentlich überhaupt? Es scheint mir wenig sinnvoll, die ID zu duplizieren.
Geht, aber natürlich wieder leider auf alle Einträge.
Logisch. Wo soll die ID denn hin?
insert into muell (abc)values('xyxy');update muell set abc=last_insert_id() where id=last_insert_id();
Das geht nicht, obwohl keine Fehlermedlung kommt, denke das in dem Fall eben die wherebedingung nichts finden kann, weil vermutlich last_insert_id=0 sein könnte.
Welchen Sinn hat diese Konstruktion?
Und bitte geh dabei mal von deinem Müllbeispiel ab und komme auf deine reale Anwendung, bei der sowas sinnvoll sein soll. Denn es ist in meinen Augen absolut NICHT sinnvoll, ein ID-Feld im gleichen Datensatz zu duplizieren.
Wobei ich die Logik nicht verstehe, schliesslich findet er ja auch den richtigen Wert ohne "where".
Wie würdet ihr diese Abfrage gestalten, mal vom Sinn/Unsinn des Ganzen abgesehen?
Ich würde nicht vom Unsinn absehen und sie deshalb nicht gestalten. :)
- Sven Rautenberg
"Love your nation - respect the others."