Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Atomares Einfügen von MySQL, falls nicht vorhanden, mit stabilem Autoinkrement

Die Frage ist wirklich, wie man Daten normalisiert, wenn man erwartet, dass es Duplikate gibt. Und vermeiden Sie dann das "Brennen" von IDs.

http://mysql.rjweb.org/doc.php/staging_table#normalization diskutiert einen zweistufigen Prozess und zielt auf Massenaktualisierungen aufgrund der Hochgeschwindigkeitsaufnahme von Zeilen ab. Es degeneriert zu einer einzelnen Zeile, erfordert aber immer noch die 2 Schritte.

Schritt 1 INSERTs alle neuen Zeilen, Erstellen neuer auto_inc-IDs.

Schritt 2 zieht die IDs en masse zurück.

Beachten Sie, dass die Arbeit am besten mit autocommit=ON und außerhalb der Haupttransaktion, die die Daten lädt, erledigt wird. Dies vermeidet eine zusätzliche Ursache für das Brennen von IDs, nämlich potenzielle Rollbacks.