単一のレコード挿入を実行するループで複数のレコードを挿入すると、最後に挿入された挿入IDは最後に挿入されたものになります。私は複数のレコードを行う場合でも、文を挿入します。複数のレコードで使用されるMySQL LAST_INSERT_ID()INSERTステートメント
INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);
はのは、上記の3つのテーブルに挿入最初の記録であるとしましょう。挿入ステートメントの後、私は最後の挿入IDが3を返すと予想しましたが、1を返しました。問題のステートメントの最初の挿入ID。
これは、複数レコードのINSERTステートメントのコンテキストで、これが通常の動作(LAST_INSERT_ID()
)であることを確認してください。だから私は自分のコードを基にすることができます。
テーブルに自動インクリメントIDがありますか? –
2番目の2つの挿入IDは簡単に計算可能です。最初のレコードの後にレコードごとに1つずつ追加してください。 – dqhendricks
@dqhendricksあなたはIDが正しいと確信していますか?私が知っている限り、innodbの挿入は特定のIDのセットをロックせず、別のプロセスがその間にエントリを挿入するかもしれませんが、INSERT ... VALUES ...の複数の値についてこれについてはわかりません –