sql >> Databasteknik >  >> RDS >> Mysql

Hämtar de senast infogade ID:n för flera rader

Genom att anropa last_insert_id() får du ID:t för den FÖRSTA raden som infogades i den sista batchen. Alla andra infogade är garanterat sekventiella.

Såvida du inte gör något mycket konstigt, låter detta dig beräkna ID:t för varje rad tillräckligt enkelt.

Egentligen varierar beteendet i 5.1 beroende på inställningen av parametern innodb auto increment mode; detta borde inte spela någon roll. Så länge du inte ändrar det från standarden kommer du att se det förväntade beteendet.

Det finns enstaka fall där detta inte gör vad du förväntar dig och inte är användbart - till exempel om du gör en PÅ DUBLIKAT UPPDATERING AV NYCKEL eller INFOGA IGNORERA. I dessa fall måste du göra något annat för att räkna ut ID:n för varje rad.

Men för en vanlig vanilj INSERT-sats, utan värden specificerade för auto-inc-kolumnen, är det enkelt.

En fullständig beskrivning av hur automatiska ökningar är hanteras i innodb är här



  1. Felsökning av privata procedurer

  2. Tabellförhållande för undertyper

  3. hur man fixar OperationalError:(psycopg2.OperationalError) server stängde anslutningen oväntat

  4. Microsoft OLE DB Oförordnad! Länge leve ADO!