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

Henter de sidst indsatte id'er for flere rækker

Ved at kalde last_insert_id() får du id'et for den FØRSTE række, der er indsat i den sidste batch. Alle andre indsatte er garanteret sekventielle.

Medmindre du gør noget meget mærkeligt, giver dette dig mulighed for nemt nok at beregne ID'et for hver række.

Faktisk varierer adfærden i 5.1 afhængigt af indstillingen af ​​parameteren for innodb auto increment mode; dette burde ikke betyde noget. Så længe du ikke ændrer det fra standarden, vil du se den forventede adfærd.

Der er lejlighedsvise tilfælde, hvor dette ikke gør, hvad du forventer, og ikke er nyttigt - såsom hvis du laver en ON DUPLICATE KEY UPDATE eller INSERT IGNORE. I disse tilfælde bliver du nødt til at gøre noget andet for at finde ud af id'erne for hver række.

Men for en almindelig vanilje INSERT batch, uden værdier angivet for auto-inc kolonnen, er det nemt.

En komplet beskrivelse af, hvordan auto-increment er håndteres i innodb er her



  1. Sådan sletter du dubletter i MySQL-tabel

  2. Erklæring af tupelstrukturen af ​​en post i PL/pgSQL

  3. Mysql, omform data fra lang / høj til bred

  4. Sådan ændres en kolonnes datatype i SQL Server (T-SQL)