Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL atomic insert-if-not-exists com autoincrement estável


A questão é realmente sobre como normalizar os dados quando você espera que haja duplicatas. E evite ids "queimadas".

http://mysql.rjweb.org/doc.php/staging_table#normalization discute um processo de 2 etapas e visa atualizações em massa devido à ingestão de linhas em alta velocidade. Degenera para uma única linha, mas ainda requer as 2 etapas.

Etapa 1 INSERTs qualquer novo linhas, criando novos ids auto_inc.

O passo 2 retira os ids em massa.

Observe que o trabalho é melhor feito com autocommit=ON e fora da transação principal que está carregando os dados. Isso evita uma causa extra para a gravação de IDs, ou seja, possíveis reversões.