MySQL(Aurora)でマージ文を発行する方法

MySQL(Aurora)でマージ文を発行する方法

MySQLでマージ文を発行するにはINSERT文にON DUPLICATE KEY UPDATEキーワードを使用してマージ文を実行します。

以下のような従業員テーブルがあるとします。

これにマージ文を発行するには以下のようにON DUPLICATE KEY UPDATEキーワードを使用します。

このマージ文はIDがPKなので、データがなければインサート、既に存在すればアップデートを実行します。

データがなければインサート、あれば何もしない

PostgreSQL9.5からだとできるのですがMySQLでも同様の操作が出来るか調べてみました。

PostgreSQL9.5のupsertのON CONFLICT DO NOTHINGの動作確認

結論から言うとINSERT IGNORE文を使うと同様のことが可能です。

employeeテーブルのデータが以下の通りだとします。

この状態でinsert ignore文で既に存在するプライマリキーのデータに対してインサート文を発行してみます。

1 warningとなっていますが、postgreSQL同様、データに変更がないことが確認できます。

UPDATE IGNORE文

更新時にもUPDATE IGNORE構文を使うことができますが、プライマリキーを更新するのは普通有り得ないので、割愛します。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA