Mailinglisten-Archive |
Liebe Liste, vielleicht kann mir ja jemand mit meinem kleinen MySQL-Problem helfen: Ich hab eine Tabelle mit den feldern id (auto_increment) und sort_id (unique), beide Int(8). Über sort_id sortiere ich die Abfragen. Bei einem Insert möchte ich bestimmen können, welchen Wert sort_id hat. Daher muss ich wohl alle sort_ids größer als der einzufügende Wert um 1 erhöhen. ich habs mal mit UPDATE irgendwas SET sort_id=sort_id+1 WHERE sort_id>irgendwas ORDER BY sort_id DESC probiert. Für mich heißt das: erhöhe alle sort_ids, die größer sind als irgendwas und fang dabei beim höchsten Wert von sort_id an. das ORDER BY ... sollte zumindest laut http://www.mysql.com/doc/U/P/UPDATE.html funktionieren. OK, ich nehm mal an, das geht erst ab MySQL V. 3.23.34 (habs in der Eile nicht im Change-Log gefunden). Meistens funktioniert die obige Abfrage auch ohne dem ORDER BY... Nur leider hängt sich manchmal MySQL (unter Suse) auf und erhöht sort_id auf irgendwelche Phantasiewerte (bereich 5300000). Dann kann ich nicht mehr auf den Table zugreifen und es hilf nur noc hein Restart von Apache/MySQL. Hat jemand eine Ahnung, wie ich sicher meine sort_ids "sauber" erhöhen kann? Ach ja, ich entwickle mit MySQL und PHP auf Apache W2K bzw. Suse. Georg
php::bar PHP Wiki - Listenarchive