技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

Upsert【MySQL】

なければInsertあればUpdateする、通称Upsert命令文です。Primary Keyの他、Unique Keyも考慮するので、事前にどのカラムにKeyを設定するか検討、対処しておく必要があります。

INSERT INTO stock(
    book_id,
    status,
    created_at,
    updated_at
)
VALUES(
    1,
    1,
    CURRENT_TIMESTAMP,
    CURRENT_TIMESTAMP
)
ON DUPLICATE KEY UPDATE    // Keyが重複するレコードがあれば、UPDATEを適用
    status =
    VALUES(    // Insert部に指定したvalueを適用
        status
    ),
    updated_at =
    VALUES(    // Insert部に指定したvalueを適用
        updated_at
    )