最後にInsertまたはUpdateしたレコードのIDを取得する【MySQL】
InsertまたはUpdateした後に、他の関連テーブルを操作するため、処理したレコードのIDを使いたい場合があるかと思います。そんな時は、LAST_INSERT_IDを利用します。
Upsert時に、UpdateしたレコードのIDを取得したい場合は、LAST_INSERT_IDを併せて更新する必要があります。
INSERT INTO categories_shops( category_id, shop_id, status, created_at, updated_at ) VALUES( 1, 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP ) ON DUPLICATE KEY UPDATE status = 9, updated_at = CURRENT_TIMESTAMP, id = LAST_INSERT_ID( // Updateの時にもIDを利用できるようにするには、更新が必要 id ) ;SELECT LAST_INSERT_ID(); // 最後に処理したレコードのIDを取り出す