「UPSERT」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''UPSERT'''(読み:あっぷさーと)とは、[[SQL]]において「レコードがあればUPDATE、なければINSERT」という一連の処理のこと指すUPDATEとINSERTを超合金合体させた造語である。
+
'''UPSERT'''(読み:あっぷさーと)とは、[[SQL]]において「レコードがなければINSERT、あればUPDATE」という処理のこと指す英語である。
  
 
== 概要 ==
 
== 概要 ==
10行目: 10行目:
 
# トランザクション終了
 
# トランザクション終了
  
 +
== サーバーでの実装 ==
 
ここ最近のデータベースサーバーでは[[SQL]]を独自拡張してUPSERTを1行で書けるようにしているものもある。
 
ここ最近のデータベースサーバーでは[[SQL]]を独自拡張してUPSERTを1行で書けるようにしているものもある。
* SQL Server = MERGE命令
 
* MySQL = INSERT ... ON DUPLICATE KEY UPDATE 構文
 
*: https://dev.mysql.com/doc/refman/5.6/ja/insert-on-duplicate.html
 
  
また、ここ最近の[[ORM]]はデータベースサーバー側にUPSERT系命令が非搭載でも利用できるUPSERT命令を搭載していることが多い。煩雑な[[ソースコード]]を回避できる。
+
=== SQL Server ===
 +
MERGE命令
  
UPSERT命令の名称はSQLにしろ ORMにしろ統一されていないのが特徴である。
+
=== MySQL ===
ざっくり何個かのORMを調べただけでも全部名称が異なっている。
+
INSERT ... ON DUPLICATE KEY UPDATE 構文
* Merge
 
* InsertOrUpdate
 
* Save
 
* SaveChanges
 
  
このため使用したい製品に関するUPSERT命令は「upsert 〇〇」などと[[ググって]]調べるのが得策である。
+
* https://dev.mysql.com/doc/refman/5.6/ja/insert-on-duplicate.html
 +
 
 +
== ORMでの実装 ==
 +
ここ最近のマイクロORMなんかでは、標準でUPSERT命令を搭載し、煩雑な[[ソースコード]]を回避できるようにしているものも多い。ほとんどのものはサーバーがUPSERT系命令を持っていなくても利用できる。

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)