phpbar.de logo

Mailinglisten-Archive

[php] unverstaendliche Daten

[php] unverstaendliche Daten

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Aug 17 11:12:05 CEST 2006


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