Heim > Datenbank > MySQL-Tutorial > Kann ich Lücken in automatisch inkrementierenden Feldern in MySQL füllen?

Kann ich Lücken in automatisch inkrementierenden Feldern in MySQL füllen?

Susan Sarandon
Freigeben: 2024-11-14 18:01:02
Original
533 Leute haben es durchsucht

Can I Fill Gaps in Auto-Increment Fields in MySQL?

Lücken in automatisch inkrementierenden Feldern füllen

Frage: Gibt es eine Möglichkeit, Lücken in automatisch inkrementierten Feldern nahtlos zu füllen? Felder mit neuen Einfügungen inkrementieren?

Antwort:

Während es im Allgemeinen nicht ratsam ist, sich für die Reihenfolge oder semantische Bedeutung auf Felder mit automatischer Inkrementierung zu verlassen, gibt es beim Ausfüllen Situationen Diese Lücken können wünschenswert sein. In solchen Fällen kann eine MySQL-Funktion verwendet werden, um einen neuen Satz sequenzieller IDs zu erstellen.

Erstellen Sie eine temporäre Tabelle mit CREATE TEMPORARY TABLE NewIDs (NewID INT UNSIGNED AUTO INCREMENT, OldID INT UNSIGNED) und fügen Sie alle vorhandenen IDs ein in aufsteigender Reihenfolge:

INSERT INTO NewIDs (OldID)
SELECT Id
FROM OldTable
ORDER BY Id ASC
Nach dem Login kopieren

Dadurch wird eine Zuordnung zwischen alten und neuen IDs erstellt.

Um die Referenzen in anderen Tabellen zu aktualisieren, deaktivieren Sie Fremdschlüsseleinschränkungen:

SET foreign_key_checks = 0;
Nach dem Login kopieren

Aktualisieren Sie dann die übergeordneten und untergeordneten Tabellen:

UPDATE
Parent, Child, NewIds
SET
Parent.ParentId = NewIds.Id,
Child.ParentId = NewIds.Id
WHERE
Parent.ParentId = NewIds.ParentId AND
Child.ParentId = NewIds.ParentId
Nach dem Login kopieren

Aktivieren Sie abschließend die Fremdschlüsselprüfungen erneut:

SET foreign_key_checks = 1;
Nach dem Login kopieren

Löschen Sie die temporäre Tabelle zur Bereinigung:

DROP TABLE NewIds
Nach dem Login kopieren

Es ist wichtig zu beachten, dass dieser Prozess mit Vorsicht angewendet werden sollte, da das Ändern von Feldern für die automatische Inkrementierung Auswirkungen auf die referenzielle Integrität und Leistung haben kann.

Das obige ist der detaillierte Inhalt vonKann ich Lücken in automatisch inkrementierenden Feldern in MySQL füllen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage