Wenn ich mehrere Datensätze mit einer Schleife einfügen, die eine einzelne Datensatz einfügen führt, ist die letzte zurückgegebene ID zurückgegeben, wie erwartet, die letzte. Aber wenn ich eine mehr Datensätze INSERT-Anweisung tun:MySQL LAST_INSERT_ID() verwendet mit mehreren Datensätzen INSERT-Anweisung
INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);
sagen Lassen Sie die oben genannten drei die ersten Datensätze in der Tabelle eingefügt sind. Nach der INSERT-Anweisung erwartete ich, dass die letzte INS-ID 3 zurückgibt, aber sie gab 1 zurück. Die erste INS-ID für die fragliche Anweisung.
So kann jemand bitte bestätigen, wenn dies das normale Verhalten von LAST_INSERT_ID()
im Kontext mehrerer Datensätze INSERT-Anweisungen ist. Also kann ich meinen Code darauf aufbauen.
Hat Ihre Tabelle eine Auto-IncrementID? –
die zweiten beiden einfügen IDs sind leicht zu berechnen. fügen Sie einfach einen für jeden Datensatz nach dem ersten hinzu. – dqhendricks
@dqhendricks sind Sie sicher, dass die IDs richtig sind? Soweit mir bekannt ist, sperren Inserts mit innodb einen bestimmten Satz von IDs nicht, und ein anderer Prozess fügt möglicherweise einen Eintrag dazwischen ein, obwohl ich mir darüber für mehrere Werte in 'INSERT ... VALUES ...' nicht sicher bin –