MySQL ON DUPLICATE KEY は最後に挿入または更新された ID を返すことができますか?
MySQL では、INSERT ... ON DUPLICATE KEY UPDATE ステートメント単一のクエリ内で挿入または更新操作を行うことができます。ただし、影響を受ける行の ID を取得するのは困難な場合があります。
通常、LAST_INSERT_ID() 関数は、新しく挿入されたレコードの ID を返します。更新操作の後は、意味がありません。これを解決するには、MySQL ドキュメントで説明されているように、LAST_INSERT_ID() を使用した式を利用できます。
具体的には、id フィールド (この例では AUTO_INCREMENT カラム) を更新し、LAST_INSERT_ID(expr) を含む式を作成します。 )意味を持たせるための表現として
例:
ID 列が AUTO_INCREMENT であるテーブルを考えてみましょう。行を更新または挿入し、影響を受ける ID を取得するには:
INSERT INTO table (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), c = 3;
このアプローチでは、挿入操作または更新操作に関係なく、LAST_INSERT_ID() によって影響を受ける行の ID が提供されるため、取得するための 2 番目のクエリが不要になります。 ID。
以上がMySQL の ON DUPLICATE KEY UPDATE は、影響を受ける行 ID をどのように返すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。