mysql_insert_id()
競争状態での信頼性は?複数のユーザーが同時にデータを挿入している場合、この関数は真の ID を返しますか、それとも他のユーザーの挿入されたデータ ID を返しますか?
テーブル エンジンは MyISAM です。
mysql_insert_id()
競争状態での信頼性は?複数のユーザーが同時にデータを挿入している場合、この関数は真の ID を返しますか、それとも他のユーザーの挿入されたデータ ID を返しますか?
テーブル エンジンは MyISAM です。
mysql_insert_id
完全にマルチユーザーセーフです。データベース接続に完全に依存しており、接続ごとに1人のユーザーしか持てません....だから、あなたの質問によると、それは真のIDを返します....
MySqlのドキュメントから、
生成された ID は、接続ごとにサーバーに保持されます。これは、関数によって特定のクライアントに返される値が、そのクライアントによって AUTO_INCREMENT 列に影響を与える最新のステートメントに対して生成された最初の AUTO_INCREMENT 値であることを意味します。この値は、他のクライアントが独自の AUTO_INCREMENT 値を生成したとしても、影響を受けることはありません。この動作により、各クライアントは、他のクライアントのアクティビティを気にせず、ロックやトランザクションを必要とせずに、独自の ID を取得できます。
複数のユーザーが挿入している場合でも、プログラムの実行では順次実行されます。
php.netから
"mysql_insert_id() は最後に実行されたクエリに作用します。値を生成するクエリの直後に mysql_insert_id() を呼び出してください。"
また
この拡張機能の使用はお勧めできません。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQ も参照してください。この機能の代替手段は次のとおりです。
mysqli_insert_id()
PDO::lastInsertId()
dev.mysql からこのリンクを確認することもできます。
「mysql_insert_id() の値は、現在のクライアント接続内で発行されたステートメントによってのみ影響を受けます。他のクライアントによって発行されたステートメントによっては影響を受けません。」