Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - automatisch dekrementierender Wert

Das sollten Sie nicht tun.
Verwenden Sie keine automatisch inkrementierte eindeutige Kennung als Ordnungszahl.
Das Wort "eindeutig" bedeutet, dass der Bezeichner für immer an seiner Zeile hängen bleiben soll .

Es besteht kein Zusammenhang zwischen diesen Nummern und dem Aufzählen.
Stellen Sie sich vor, Sie möchten Datensätze in alphabetischer Reihenfolge auswählen. Wohin würden Ihre wertvollen Zahlen gehen? Eine Datenbank ist nicht wie eine geordnete Liste, wie Sie wahrscheinlich denken. Es ist keine flache Datei mit Zeilen, die in einer vordefinierten Reihenfolge gespeichert sind. Es hat eine völlig andere Ideologie. Zeilen in der Datenbank haben keine Reihenfolge. Und wird nur zu ausgewählten Zeiten bestellt, wenn dies ausdrücklich durch ORDER BY festgelegt wurde -Klausel.
Außerdem soll eine Datenbank für Sie suchen. Sie können also feststellen, dass diese Autoinkrementnummer bei gefilterten Zeilen oder einer anderen Reihenfolge absolut nichts mit den tatsächlichen Zeilenpositionen zu tun hat.

Wenn Sie die Ausgabe aufzählen möchten, ist dies die Aufgabe einer Präsentationsschicht. Fügen Sie einfach einen Zähler auf der PHP-Seite hinzu.

Und noch einmal:Diese Nummern sollen einen bestimmten Datensatz identifizieren. Wenn Sie diese Nummer ändern, finden Sie Ihren Datensatz nie wieder.

Nehmen Sie zum Beispiel genau diese Seite. Stack Overflow identifiziert seine Fragen mit einer solchen Nummer:

Stellen Sie sich also vor, Sie hätten diese Seitenadresse in einem Lesezeichen gespeichert. Jetzt kommt Jeff und nummeriert die ganze Datenbank neu. Sie drücken Ihr Lesezeichen und landen bei der anderen Frage. Die ganze Seite würde zu einem schrecklichen Durcheinander werden.

Denken Sie daran:Die Neunummerierung eindeutiger Kennungen ist böse!