テーブルの 1 つにMySQL を実行していて、テーブルにおよびに設定されているINSERT
列があるとします。item_id
autoincrement
primary key
新しく生成された主キーの値をitem_id
同じクエリで出力するにはどうすればよいですか?
現在、ID を取得するために 2 番目のクエリを実行していますが、間違った結果が生成される可能性があることを考慮すると、これは良い方法とは言えません...
これが不可能な場合、正しい ID を取得するためのベスト プラクティスは何ですか?
ベストアンサー1
次の関数を使用する必要がありますLAST_INSERT_ID()
:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
例えば:
INSERT INTO table_name (col1, col2,...) VALUES ('val1', 'val2'...);
SELECT LAST_INSERT_ID();
これにより、挿入PRIMARY KEY
した最後の行の値が返されます。
生成された ID は、接続ごとにサーバー内で保持されます。つまり、関数によって特定のクライアントに返される値は、そのクライアントによってAUTO_INCREMENT 列に影響を与える最新のステートメントに対して生成された最初の AUTO_INCREMENT 値になります。
したがって、 によって返される値はLAST_INSERT_ID()
ユーザーごとに異なり、他のユーザーがサーバー上で実行している可能性のある他のクエリの影響を受けません。