sql >> Database teknologi >  >> RDS >> Mysql

MySQL atomic insert-hvis-ikke-eksisterer med stabil autoincrement

Spørgsmålet handler egentlig om, hvordan man normaliserer data, når man forventer, at der er dubletter. Og undgå så at "brænde" id'er.

http://mysql.rjweb.org/doc.php/staging_table#normalization diskuterer en 2-trins proces og er rettet mod masseopdateringer på grund af højhastighedsindtagelse af rækker. Det degenererer til en enkelt række, men kræver stadig de 2 trin.

Trin 1 INSERTs enhver ny rækker, opretter nye auto_inc-id'er.

Trin 2 trækker id'erne tilbage i massevis.

Bemærk, at arbejdet bedst udføres med autocommit=ON og uden for hovedtransaktionen, der indlæser dataene. Dette undgår en ekstra årsag til at brænde id'er, nemlig potentielle rollbacks.




  1. Oracle ORA-30004 ved brug af SYS_CONNECT_BY_PATH-funktionen,

  2. vælg count(*) fra tabellen over mysql i php

  3. Django Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes

  4. SQL Server CTE og rekursion eksempel