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

Abrufen der zuletzt eingefügten IDs für mehrere Zeilen

Der Aufruf von last_insert_id() gibt Ihnen die ID der ERSTEN Zeile, die in den letzten Stapel eingefügt wurde. Alle anderen eingefügten sind garantiert sequentiell.

Wenn Sie nicht etwas sehr Seltsames tun, können Sie damit die ID jeder Zeile ganz einfach berechnen.

Tatsächlich variiert das Verhalten in 5.1 je nach Einstellung des Parameters innodb auto increment mode; das sollte keine Rolle spielen. Solange Sie die Standardeinstellung nicht ändern, sehen Sie das erwartete Verhalten.

Es gibt gelegentliche Fälle, in denen dies nicht das tut, was Sie erwarten, und nicht nützlich ist, z. B. wenn Sie ein ON DUPLICATE KEY UPDATE oder INSERT IGNORE ausführen. In diesen Fällen müssen Sie etwas anderes tun, um die IDs der einzelnen Zeilen zu ermitteln.

Aber für einen einfachen INSERT-Batch, bei dem keine Werte für die auto-inc-Spalte angegeben sind, ist es einfach.

Eine vollständige Beschreibung, wie Auto-Inkremente sind in innodb gehandhabt wird hier