Mailinglisten-Archive |
Hi loide, grade habe ich ein verhalten an mysql festgestellt, was mich etwas verwundert (auch wenn es eigentlich sehr schlau ist ;)) Wenn ich einen record per update table set field='foo' where id=1 mache, und in dem record ist im feld "field" schon 'foo' enthalten, dann meldet mysql Query OK, 0 rows affected (0.00 sec) Mache ich hingegen update table set field='foofoo' where id=1 bekomme ich Query OK, 1 row affected (0.00 sec) Die doku sagt es ja auch: If you set a column to the value it currently has, MySQL notices this and doesn't update it. Kann ich mysql dazu bewegen, das update _immer_ zu machen? Der hintergrund, warum ich das brauche: In einer PHP-anwendung kann ein user seine daten ändern. Diese daten müssen anschließend von einem admin freigegeben werden. Es handelt sich dabei um ein etwas komplexeres layout mit 18 tabellen und mehreren 1:n-relationen. Daher habe ich darauf verzichtet, in jeder tabelle ein flag-feld für die freischaltung zu machen. Stattdessen werden die vom user editierten datensätze in einer weiteren tabelle als sql-statements gespeichert, die jederzeit später vom admin über ein formular ausgeführt werden können. Um zu erkennen, ob die ausführung erfolgreich war, überprüfe ich die affected_rows, die bei einem update mit dem schon vorhanden inhalt eben leider 0 ergeben. Wie kann ich aber nun erkennen, daß mal wirklich ein sql-statement nicht ausgeführt werden konnte, weil irgendwelche kaputten inhalte vom user eingegeben wurden? ciao amalesh -- Keep Agent alive: http://www.living-source.com/agent/ LS beim CCC-Camp: http://www.living-source.com/ccc/ German Goatrance: http://www.goatrance.de Contact : aka_(at)_bigfoot.de ~ icq:963380
php::bar PHP Wiki - Listenarchive