Lücken in automatisch inkrementierenden Feldern schließen
Der Zweck von automatisch inkrementierten Feldern besteht ausschließlich darin, Datensätze in einer Datenbank eindeutig zu identifizieren. Obwohl es wünschenswert erscheinen mag, die durch gelöschte Datensätze entstandenen Lücken zu schließen, wird dies im Allgemeinen als schlechte Datenbankpraxis angesehen.
Mängel in Strategien zum Füllen von Lücken
Versuche, dies zu tun Das Ausfüllen von Lücken kann zu Folgendem führen:
-
Fehlerhaftes Datenbankdesign: Dies impliziert, dass automatisch inkrementierte IDs über ihre Verwendung als Datensatzkennungen hinaus eine besondere Bedeutung haben.
-
Datenmanipulationsfehler:Unbeabsichtigtes Ändern von Daten oder Einführen von Inkonsistenzen.
Alternative Überlegungen
Anstatt Lücken zu schließen, ziehen Sie die folgenden Alternativen in Betracht:
-
Zukünftige Lücken reservieren: Hängen Sie am Ende der ID-Sequenz ausreichend große Lücken an, um mögliche zukünftige Löschungen zu berücksichtigen.
-
Dokumentieren Sie die Lücken: Stellen Sie gegebenenfalls eine Dokumentation bereit, in der die Bedeutung der Lücken erläutert wird.
-
Unnötige Löschungen vermeiden: Vermeiden Sie nach Möglichkeit das Löschen von Datensätzen aus Tabellen mit automatisch inkrementierenden Feldern.
Lückenfüllen in MySQL erzwingen (erweitert)
Falls unbedingt erforderlich, erfordert das Füllen von Lücken in MySQL ein erweitertes Verfahren:
-
Erstellen Sie eine temporäre Tabelle: TEMPORÄRE TABELLE ERSTELLEN NewIDs(NewID INT UNSIGNED AUTO_INCREMENT, OldID INT UNSIGNED).
-
Temporäre Tabelle füllen: INSERT INTO NewIDs (OldId) SELECT Id FROM OldTable ORDER BY Id ASC.
-
Übergeordnete und untergeordnete Tabellen aktualisieren: UPDATE Parent, Child, NewIds SET Parent.ParentId = NewIds.Id, Child.ParentId = NewIds.Id WHERE Parent.ParentId = NewIds.ParentId AND Child.ParentId = NewIds.ParentId.
-
Fremdschlüsselprüfungen erneut aktivieren:SET Foreign_key_checks = 1.
-
Löschen Sie die temporäre Tabelle: DROP TABLE NewIds.
Es wird jedoch dringend empfohlen, bei der Erwägung dieses Ansatzes aufgrund der inhärenten Risiken mit Vorsicht vorzugehen.
Das obige ist der detaillierte Inhalt vonSollten Sie Lücken in Feldern mit automatischer Inkrementierung füllen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!