mysql では、自動インクリメントの場合、挿入操作に使用される主キーを取得するにはどうすればよいですか。
基本的に、ステートメントが完了すると、新しい自動インクリメント値が返されるようにします。
ありがとう!
mysql では、自動インクリメントの場合、挿入操作に使用される主キーを取得するにはどうすればよいですか。
基本的に、ステートメントが完了すると、新しい自動インクリメント値が返されるようにします。
ありがとう!
あなたの明確化コメントは、別の同時 INSERT が発生した場合に LAST_INSERT_ID() が間違った結果をもたらさないようにすることに関心があることを示しています。他の同時アクティビティに関係なく、LAST_INSERT_ID() を使用しても安全です。LAST_INSERT_ID() は、現在のセッション中に生成された最新の ID のみを返します。
自分で試すことができます:
考えてみれば、これが理にかなっている唯一の方法です。自動インクリメント キー メカニズムをサポートするすべてのデータベースは、このように動作する必要があります。結果が、同時に INSERT を実行している可能性のある他のクライアントとの競合状態に依存している場合、現在のセッションで最後に挿入された ID 値を取得する信頼できる方法はありません。
MySQL のLAST_INSERT_ID()
MySQL ドキュメントでは、関数について説明しています: LAST_INSERT_ID()
[select max(primary_key_column_name) from table_name] ああ、必ずしもそうではありません。私は MySQL の専門家ではありませんが、最後に完了したアクションの最後に挿入された ID を取得する特定の方法は、これよりも少し堅牢です。テーブルへの書き込みとクエリの間に挿入が発生した場合はどうなりますか? 何ヶ月も前に私を刺したので、私は知っています(そう、そうです)。他のすべてが失敗した場合は、マニュアルをお読みください: http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html