Mailinglisten-Archive |
Hi, Am Donnerstag, 17. August 2006 10:45 schrieb Bernd Heim: > > Norbert Pfeiffer schrieb: > >> Hallo, > >> > >> lasse mir eine Tabelle mit "ORDER BY dZeit DESC" ausgeben: > >> +--------+---------------------+ > >> > >> | nErrID | dZeit | > >> > >> +--------+---------------------+ > >> > >> | 2820 | 2006-08-17 10:10:01 | > >> | 2824 | 2006-08-17 10:00:01 | > >> | 2819 | 2006-08-17 10:00:01 | > >> | 2818 | 2006-08-17 09:50:02 | > >> | 2823 | 2006-08-17 09:50:01 | > >> | 2817 | 2006-08-17 09:40:01 | > >> | 2822 | 2006-08-17 09:40:01 | > >> | 2821 | 2006-08-17 09:30:54 | > >> | 2816 | 2006-08-17 09:30:01 | > >> | 2815 | 2006-08-17 09:20:01 | > >> | 2814 | 2006-08-17 09:10:01 | > >> | 2813 | 2006-08-17 09:00:01 | > >> | 2812 | 2006-08-17 08:50:01 | > >> | 2811 | 2006-08-17 08:40:01 | > >> | 2810 | 2006-08-17 08:30:01 | > >> > >> +--------+---------------------+ > >> Was mich stutzig macht ist: nErrID ist ein auto_increment-Feld. > >> In die Tabelle wird nur geschrieben, nichts veraendert. Der > >> Zeiteintrag erfolgt mit NOW(), d.h. es wird der Zeitpunkt des > >> Eintragens verwendet. > >> Ergo sollten die ID's in ihrer Reihenfolge doch dem Zeitstempel > >> folgen, oder sehe ich da etwas falsch ... ? > Tobias Fichtner schrieb: > > MalZeit Norbert, > > > > AUTO_INCREMENT eigenet sich nicht für Fortlaufende Nummernkreise, > > sondern diet ledigtlich dazu, Werte automatisch eindeutig > > zuzuweisen. > Trotzdem müsste die Nummerierung doch fortlaufend sein, oder? offensichtlich nicht. :-) Abgesehen davon, daß das mal wieder nichts mit PHP zu tun hat, wäre auch - mal wieder - ein Blick in das MySQL-Handbuch nicht falsch: http://mysql.com/doc/refman/5.0/en/example-auto-increment.html Dort gibt es verschiedene Ansätze für Erklärungen: 1. " You can retrieve the most recent AUTO_INCREMENT value with the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. These functions are connection-specific, so their return values are not affected by another connection which is also performing inserts." 2. "Server-system variables related to AUTO_INCREMENT (auto_increment_increment and auto_increment_offset) that can be used for replication: Section 5.2.2, 'Server System Variables'" Aus 1. könnte man schließen, daß es Abhängigkeiten von den Serververbindungen gibt. Aus 2. kann man ersehen, daß es Systemvariablen gibt, die das Verhalten von AUTO_INCREMENT beeinflussen. Ausführlich dargestellt sind die Variablen hier: http://mysql.com/doc/refman/5.0/en/server-system-variables.html Wenn man sich die IDs genau ansieht, kann man im übrigen auch eine gewisse Ordnung erkennen. Die Zahlen sind zwar versetzt, aber folgen trotzdem einer Reihenfolge: > >> | 2820 | 2006-08-17 10:10:01 | > >> | 2824 | 2006-08-17 10:00:01 | > >> | 2819 | 2006-08-17 10:00:01 | > >> | 2818 | 2006-08-17 09:50:02 | > >> | 2823 | 2006-08-17 09:50:01 | > >> | 2817 | 2006-08-17 09:40:01 | > >> | 2822 | 2006-08-17 09:40:01 | > >> | 2821 | 2006-08-17 09:30:54 | > >> | 2816 | 2006-08-17 09:30:01 | > >> | 2815 | 2006-08-17 09:20:01 | > >> | 2814 | 2006-08-17 09:10:01 | > >> | 2813 | 2006-08-17 09:00:01 | > >> | 2812 | 2006-08-17 08:50:01 | > >> | 2811 | 2006-08-17 08:40:01 | > >> | 2810 | 2006-08-17 08:30:01 | - 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820 - 2821, 2822, 2823, 2824 Interessant wäre natürlich, wie es jetzt weitergeht. Zunächst müßte dann 2825 kommen, danach wäre die Frage, ob es wieder Schritt für Schritt weitergeht, oder ob wieder parallele ID-Stränge beginnen. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive