Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn die sich selbst erhöhende ID von MySQL nicht kontinuierlich ist?

Was soll ich tun, wenn die sich selbst erhöhende ID von MySQL nicht kontinuierlich ist?

WBOY
WBOYOriginal
2022-05-16 17:26:435848Durchsuche

In MySQL kann „AUTO_INCREMENT“ verwendet werden, um das Problem der diskontinuierlichen automatischen Inkrementierung von IDs zu lösen. „AUTO_INCREMENT“ wird verwendet, um das automatische Wachstum des Primärschlüssels festzulegen Die Syntax lautet „ALTER TABLE Tabellenname“ AUTO_INCREMENT=1“.

Was soll ich tun, wenn die sich selbst erhöhende ID von MySQL nicht kontinuierlich ist?

Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.

Was tun, wenn die MySQL-Auto-Inkrementierungs-ID nicht kontinuierlich ist? MySQL legt eindeutige Felder in Navicat fest:

Index (Felder auswählen) >>> Indextyp (UNIQUE)

Wenn ein eindeutiges Feld vorhanden ist Die Primärschlüssel-ID stammt aus der Tabelle. Beim Hinzufügen neuer Daten ist das eindeutige Feld bereits vorhanden. Das Einfügen schlägt fehl, aber die ID wurde zu diesem Zeitpunkt um +1 erhöht. Das erneute Einfügen von Daten verursacht das Problem der ID-Diskontinuität .

-- Nach der Ausführung wird nicht angezeigt, dass die eingefügte ID auf 1 gesetzt ist, sondern auf den maximalen ID-Wert in der Tabelle + 1.

 ALTER TABLE `table` AUTO_INCREMENT =1;

Fügen Sie die obige SQL-Anweisung vor dem Einfügevorgang hinzu und setzen Sie die Einfügungs-ID auf die in der aktuellen Tabelle vorhandene ID + 1;

auto_increment wird für das automatische Wachstum des Primärschlüssels ab 1 verwendet, wenn Sie Fügen Sie den ersten hinzu. Wenn der Datensatz gelöscht und die zweiten Hop-Daten eingefügt werden, ist der Primärschlüsselwert 2 und nicht 1.

Zum Beispiel:

create table `test`
(
`id` int(10) not null auto_increment, -- 表示自增列
`name` varchar(20) not null,
primary key(`id`)
)

auto_increment = 1; – Gibt die Startgröße der automatischen Inkrementierung an – Auf diese Weise können Sie eine Tabelle „test“ mit der ID als Spalte für die automatische Inkrementierung erstellen.

– Führen Sie die aus Anweisung in Testwerte (`Name`) ('Name') einfügen;

-- Sie können eine Datenzeile einfügen als: 1 'Name'

Erweiterte Informationen:

Bei der Verwendung von AUTO_INCREMENT sollten Sie aufpassen zu den folgenden Punkten:

1. AUTO_INCREMENT ist eine Datenspalte. Dieses Attribut gilt nur für Datenspalten vom Typ Ganzzahl.

2. Die Datenspalte, für die das Attribut AUTO_INCREMENT festgelegt ist, sollte eine positive Sequenz sein, daher sollte die Datenspalte als UNSIGNED deklariert werden, damit die Nummer der Sequenz verdoppelt werden kann.

3. Die Datenspalte AUTO_INCREMENT muss einen eindeutigen Index haben, um eine Duplizierung von Seriennummern zu vermeiden (d. h. es handelt sich um den Primärschlüssel oder einen Teil des Primärschlüssels). Die Datenspalte AUTO_INCREMENT muss das Attribut NOT NULL haben.

4. Die maximale Anzahl der Datenspalte AUTO_INCREMENT hängt vom Datentyp der Spalte ab. Beispielsweise beträgt die maximale Anzahl der Datenspalte TINYINT 127. Wenn UNSIGNED hinzugefügt wird, beträgt die maximale Anzahl 255. Sobald die Obergrenze erreicht ist, wird AUTO_INCREMENT ungültig.

5. Beim Löschen der gesamten Tabelle startet MySQL AUTO_INCREMENT die Nummerierung von 1 an.

Das liegt daran, dass MySQL (die beste Kombination mit PHP) bei der Durchführung einer vollständigen Tabellenoperation tatsächlich eine solche Optimierungsoperation durchführt: Zuerst alle Daten und Indizes in der Datentabelle löschen und dann die Datentabelle neu erstellen.

Wenn Sie alle Datenzeilen löschen und die Sequenznummerninformationen beibehalten möchten, können Sie einen Löschbefehl verwenden, um die Optimierung von MySQL (die beste Kombination mit PHP) zu unterdrücken: delete from table_name where 1;

Empfohlenes Lernen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die sich selbst erhöhende ID von MySQL nicht kontinuierlich ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn