Beim Aktualisieren der automatisch inkrementierten Primärschlüssel-ID in MySQL sind Probleme aufgetreten

Beim Aktualisieren der automatisch inkrementierten Primärschlüssel-ID in MySQL sind Probleme aufgetreten

Dies ist ein Problem, das mir bekannt ist, aber ich wäre fast in die Falle getappt (ich hätte es fast vergessen, aber zum Glück fiel es mir ein, als ich die Online-Punkte sortierte, bevor ich online ging), deshalb habe ich es hier speziell aufgezeichnet

Warum die Auto-Inkrement-ID aktualisieren?

Ich musste aufgrund historischer Geschäftsprobleme eine Reihe von IDs aktualisieren und um Konflikte zu vermeiden, musste ich die IDs für die Aktualisierung mehrmals erweitern. Da die Datenmenge in meiner Tabelle nicht groß ist, handelt es sich um eine Situation mit vielen Lese- und wenigen Schreibvorgängen, also habe ich sie einfach um 1000 erweitert.

Frage

Wenn wir in MySQL den Autoinkrement-Primärschlüssel auf einen größeren Wert aktualisieren (z. B. der Maximalwert der Autoinkrement-ID ist 1000 und Sie aktualisieren den Datensatz mit ID = 49 auf ID = 1049), ändert MySQL den Autoinkrement-Wert der Tabelle nicht auf den aktualisierten Wert. In einigen Fällen, z. B. nach DDL, Neustart usw., beginnt das Unternehmen, Fehler zu melden. Wenn Sie zu diesem Zeitpunkt den aktuellen Vorgang nicht kennen, denken Sie möglicherweise fälschlicherweise, dass es sich um ein Problem mit dem aktuellen Geschäftsvorgang handelt. Tatsächlich liegt es an der durch die Aktualisierungs-ID vergrabenen Grube (Primärschlüsselkonflikt).
Wie unten dargestellt:

Abbildung 1: Originaldaten vor dem Update

Rohdaten

Update-Anweisung ausführen

Testsatz-ID aktualisieren = 10, wobei ID = 2;

Abbildung 2: Aktualisierte Daten

Aktualisierte Daten

Führen Sie eine neue Insert-Anweisung aus

Test(name)werte einfügen ('dddd')

Abbildung 3: Neue Daten eingefügt

Nach dem Einfügen neuer Daten

Ich glaube, jeder hat das Problem zu diesem Zeitpunkt gesehen. Zu Beginn nach dem Update gibt es möglicherweise kein Problem, aber wenn die selbstinkrementierende ID den von Ihnen aktualisierten Maximalwert erreicht, ist ein ID-Konflikt unvermeidlich. . .

Wie man es löst

1. Wenn es sich um eine persönliche Testbibliothek handelt, ist dies nicht wichtig. Sie können die Datenbank neu starten
2. Natürlich kann die Online-Datenbank nicht auf diese Weise eingerichtet werden, es sei denn, Sie sind sehr eigensinnig (und Sie benötigen einen DBA, der Sie dabei unterstützt). Zu diesem Zeitpunkt können Sie versuchen, eine ID anzugeben, um ein Datenelement einzufügen, das im Geschäft bedeutungslos ist, z. B. weich gelöschte Daten. (Meine Fallliste hat keine weiche Löschmarkierung, Sie können das verstehen.)

Testwerte (ID, Name) einfügen (20, 'eeee');

Nach dem Betrieb, wie in der Abbildung dargestellt:

Einfügen durch Angabe der ID

Führen Sie die folgende SQL-Anweisung aus und vergleichen Sie die Ergebnisse

Testwerte (Name) einfügen ('ffff');

Vergleichsergebnisse

An diesem Punkt hat die Auto-Inkrement-ID begonnen, vom Maximalwert aus anzusteigen.

Nachdem ich nach Informationen gesucht hatte, stellte ich fest, dass dieser Fehler bereits 2005 auftrat, jedoch aufgrund der Leistung und einiger Szenarien nicht behoben wurde. In MySQL 8.0.11 tritt dieses Problem normal auf.

Dies ist das Ende dieses Artikels über die Probleme, die beim Aktualisieren der automatisch inkrementierten Primärschlüssel-ID durch MySQL auftreten. Weitere relevante Inhalte zum Aktualisieren der automatisch inkrementierten Primärschlüssel-ID durch MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So generieren Sie die MySQL-Primärschlüssel-ID (selbstinktive, eindeutige und unregelmäßige)
  • Die automatische Inkrementierung der Primärschlüssel-ID von MySQL wird auf diese Weise nicht verarbeitet

<<:  HTML-Tabelle_Powernode Java Academy

>>:  CSS Transition erweitert und reduziert Elemente durch Ändern der Höhe

Artikel empfehlen

Docker exec führt mehrere Befehle aus

Der Befehl „Docker Exec“ kann Befehle in einem la...

Grafisches Tutorial zur Installation von MySQL5.7.18 im Windows-System

MySQL-Installationstutorial für Windows-Systeme h...

MySQL-Variablenprinzipien und Anwendungsbeispiele

In der MySQL-Dokumentation können MySQL-Variablen...

Detaillierte Erklärung gängiger Docker Compose-Befehle

1. Die Verwendung von Docker Compose ist der Verw...

Detaillierte Installation und Konfiguration von MySql auf dem Mac

1. Herunterladen und installieren Laden Sie die D...

Verbesserungen am Webserver zur Verbesserung der Website-Leistung

<br />Im ersten Abschnitt dieser Reihe haben...

Dieser Artikel zeigt Ihnen das Prinzip der MySQL Master-Slave-Synchronisation

Inhaltsverzeichnis Kurze Analyse des MySQL Master...

Einführung des Code-Prüftools stylelint zum Erfahrungsaustausch

Inhaltsverzeichnis Vorwort Text 1. Installieren S...

Mehrere Möglichkeiten zur Implementierung der Vererbung in JavaScript

Inhaltsverzeichnis Strukturelle Vererbung (implem...

Beispielcode für HTML-Framesets

Dieser Artikel stellt ein möglichst einfaches Fra...