列INSERT
を持つテーブルに単一の行を作成するAUTO_INCREMENT
場合、LAST_INSERT_ID()
関数を使用して、AUTO_INCREMENT
その行に格納されている新しい'ed値を返します。
多くのMicrosoft SQL Server開発者と管理者がSQL Server(SCOPE_IDENTITY
および@@IDENTITY
)の同等の機能に問題がないことに気付いていないことは間違いない。
MySQLドキュメントの状態を知っています:
生成されたIDは、接続ごとにサーバーで維持されます。これは、関数によって特定のクライアントに返される値が、そのクライアントによって列に
AUTO_INCREMENT
影響を与える最新のステートメントに対して生成される最初の値であることを意味します。他のクライアントが独自の値を生成しても、この値は他のクライアントの影響を受けません。この動作により、各クライアントは、他のクライアントのアクティビティを気にすることなく、ロックやトランザクションを必要とせずに独自のIDを取得できます。AUTO_INCREMENT
AUTO_INCREMENT
さらに言えば:
複数のクライアントから
LAST_INSERT_ID()
andAUTO_INCREMENT
列を同時に使用することは完全に有効です。
LAST_INSERT_ID()
正しい値を返さない原因となる既知のリスクやシナリオはありますか?
CentOS 5.5 x64およびFedora 16 x64およびInnoDBエンジンでMySQL 5.5を使用しています。