2017-09-22 13 views
0

iが列AUTO_INCREMENTと複数のインサートを持つテーブルが同時に起こっている持っていると仮定必要。どうすればそれを得ることができますか?私の挿入後、多くの挿入が起こっているかもしれません。AUTO_INCREMENTカラムの値が

こんにちは、これを見つけるのを手伝ってください。

+0

PDOのようなものをお使いですか? – Adam

+0

PDO申し訳ありませんでした。説明する? –

+0

これはあなたの意味ですか:https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.htmlまたはプライマリキー以外のフィールドで自動インクリメントを行いますか? – PaulF

答えて

0

MySQLの機能LAST_INSERT_ID()を使用できます。 Hereはドキュメントです。

すなわち関数(接続あたり換言すれば、)セッション当たり働きます。異なるセッション(接続)からの複数のINSERTが同時に発生している場合、各セッション(接続)は、他のセッション(接続)とは独立して最後に挿入した値を返します。

しかし、その機能が驚くほど部分的に動作するため、ドキュメントを完全に読んでください。例えば、同じセッションインサート複数行を一度場合、LAST_INSERT_ID()が挿入された行のIDを返します。最終的に挿入された最後の行が生成したIDを実際に取得するには、最終的にROW_COUNT()と組み合わせる必要があります。

さらに、LAST_INSERT_ID()がトランザクション、トリガー、およびイベントでどのように機能するのか、またトランザクションのロールバックやコミットの場合はどのように機能するのかを考慮する必要があります。

ROW_COUNT()もまた、驚くべき挙動を有する複雑な獣であってもよい。たとえば、INSERT ... ON DUPLICATE KEY UPDATEステートメントの後に使用されたときの動作を確認します。これはすべてdocumentationにあります。私はそれを完全に理解するために何度も読む必要があります。

関連する問題