Warum AUTO_INCREMENT verwenden?
Schauen wir uns noch einmal die Kunden- und Bestelltabellen an. Kunden in der Kundentabelle werden durch die Spalte cust_id eindeutig identifiziert und jeder Kunde hat eine eindeutige Nummer. Ebenso hat jede Bestellung in der Auftragstabelle eine eindeutige Bestellnummer, die in der Spalte order_num gespeichert ist. Diese Zahlen haben keine besondere Bedeutung, außer dass sie eindeutig sind. Beim Hinzufügen eines neuen Kunden oder einer neuen Bestellung ist eine neue Kunden-ID oder Bestellnummer erforderlich. Diese Zahlen können beliebig sein, solange sie eindeutig sind.
Die einfachste verwendete Zahl ist natürlich die nächste Zahl. Die sogenannte nächste Zahl ist eine Zahl, die größer als die aktuelle Maximalzahl ist. Wenn beispielsweise die maximale Anzahl von cust_id 10005 beträgt, kann der nächste in die Tabelle eingefügte Kunde eine cust_id von 10006 haben.
Ist es einfach? nicht unbedingt. Wie bestimmen Sie den nächsten zu verwendenden Wert? Natürlich können Sie eine SELECT-Anweisung verwenden, um die größte Zahl zu finden (mit der Funktion Max()) und dann 1 dazu addieren. Dies ist jedoch nicht zuverlässig (Sie müssen einen Weg finden, um sicherzustellen, dass niemand sonst Zeilen zwischen den von Ihnen ausgeführten SELECT- und INSERT-Anweisungen einfügt, was bei Mehrbenutzeranwendungen sehr wahrscheinlich ist), und es ist nicht sehr effizient (es führt zusätzliche MySQL-Operationen aus). ist definitiv nicht ideal).
Hier kommt AUTO_INCREMENT ins Spiel. Betrachten Sie die folgende Codezeile (Teil der CREATE TABLE-Anweisung, die zum Erstellen der Kundentabelle verwendet wird):
cust_id int NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT Verwendung
AUTO_INCREMENT teilt MySQL mit, dass diese Spalte Wird jedes Mal automatisch erhöht, wenn eine Zeile hinzugefügt wird. Jedes Mal, wenn eine INSERT-Operation ausgeführt wird, erhöht MySQL automatisch die Spalte (daher das Schlüsselwort AUTO_INCREMENT) und weist der Spalte den nächsten verfügbaren Wert zu. Dadurch wird jeder Zeile eine eindeutige cust_id zugewiesen, die als Primärschlüsselwert verwendet werden kann.
Hinweis:
Pro Tabelle ist nur eine AUTO_INCREMENT-Spalte zulässig und diese muss indiziert werden (z. B. indem sie zu einem Primärschlüssel gemacht wird). AUTO_INCREMENT überschreiben Wenn eine Spalte als AUTO_INCRE-MENT angegeben ist, muss sie dann einen speziellen Wert verwenden? Sie können einfach einen Wert in der INSERT-Anweisung angeben. Solange dieser eindeutig ist (bisher noch nicht verwendet wurde), wird dieser Wert anstelle des automatisch generierten Werts verwendet. Nachfolgende Inkremente beginnen mit der Verwendung dieses manuell eingegebenen Werts.
Nachteile:
Bestimmen des AUTO_INCREMENT-Werts Ein Nachteil der Generierung des Primärschlüssels durch MySQL (über die automatische Inkrementierung) besteht darin, dass Sie nicht wissen, wer die Werte sind sind.
Funktion last_insert_id() auswählen
Stellen Sie sich dieses Szenario vor: Sie fügen eine neue Bestellung hinzu. Dazu ist das Erstellen einer Zeile in der Tabelle „Orders“ und anschließend das Erstellen einer Zeile in der Tabelle „Orderitms“ für jeden bestellten Artikel erforderlich. order_num wird zusammen mit den Bestelldetails in der Tabelle orderitems gespeichert. Aus diesem Grund sind die Tabellen „orders“ und „orderitems“ verwandte Tabellen. Dies erfordert natürlich, dass Sie die resultierende order_num kennen, nachdem Sie die Zeile „Orders“ eingefügt haben, aber bevor Sie die Zeile „Orderitems“ einfügen.
Wie erhalten Sie diesen Wert, wenn Sie die Spalte AUTO_INCREMENT verwenden? Dieser Wert kann mit der Funktion last_insert_id() wie folgt abgerufen werden:
select last_insert_id()
Diese Anweisung gibt den letzten AUTO_INCREMENT-Wert zurück, der dann in nachfolgenden MySQL-Anweisungen verwendet werden kann.
[Verwandte Empfehlungen]
Besondere Empfehlung von der chinesischen PHP-Website: PHP-Programmierer-Toolbox-Download (ein Klick zum Erstellen einer PHP-Umgebung)
Detaillierte Erläuterung der Primärschlüssel in der MySQL-Datenbank
Das obige ist der detaillierte Inhalt vonMySQL selbsterhöhende AUTO_INCREMENT-Instanznutzung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!