ON DUPLICATE KEY を使用した INSERT/UPDATE の行 ID の取得
質問:
方法ON で INSERT または UPDATE を実行した後に行の ID を取得できますかMySQL で個別のクエリを実行せずに DUPLICATE KEY を実行できますか?
回答:
これを実現するには、回避策として LAST_INSERT_ID(expr) 関数を使用できます。この関数に式を渡すことで、LAST_INSERT_ID を更新に意味のあるものにすることができます。
説明:
リンクされたドキュメントに記載されているとおり(https://web.archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)、LAST_INSERT_ID() は通常、' のみを返します。成功した INSERT の「挿入済み」ID。
ただし、LAST_INSERT_ID(expr) を使用する場合ON DUPLICATE KEY UPDATE 句で、更新にも意味のあるものにすることができます。
たとえば、'id' が AUTO_INCREMENT 列の場合、クエリを次のように変更できます:
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE>
この場合、LAST_INSERT_ID(id) は、既存のレコードが見つかって更新された場合は更新された ID を返します。または、新しいレコードの ID を返します。重複が見つからなかった場合はレコードが挿入されました。
以上がON DUPLICATE KEYを使用してMySQL INSERT/UPDATE後に行IDを取得する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。