問題タブ [upsert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
13550 参照

mysql - レコードがすでに存在する場合は、mysqlデータベースに挿入し、更新します

重複の可能性:
存在する場合は更新し、存在しない場合は挿入(アップサートまたはマージ)するにはどうすればよいですか?

mysqlデータベースに挿入する方法、レコードがすでに存在する場合は、更新します...このページに解決策があることを知っています:http: //dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate .html

sib_table

このテーブルに別の兄弟を追加したい場合、SQLはどうなりますか。

0 投票する
2 に答える
10966 参照

redis - Redis で操作をアップサート (置換) するにはどうすればよいですか? (パイプラインとして)

アップサート (置換)

  • 存在する場合は更新
  • 存在しない場合に挿入

(主キーをパイプラインとして使用)

0 投票する
1 に答える
1707 参照

sql - SQL Serverでマージせずに5000以上の行をアップサートするための最も効率的/ベストプラクティスは何ですか?

1秒あたり約50ヒットを受信するWebアプリケーションがあり、ヒットごとに中央のSQLServerデータベースに約10レコードをアップサートしています。ほぼ3秒に1回、単一のインバウンド接続に対して5000以上の行をアップサーティングしています。

現在、XMLをパラメーターとして受け取るストアドプロシージャがあります。行フィールドが一致しないXMLからメインテーブルにINSERTを実行してから、XMLの値でテーブル全体を更新します。

動作は決して遅くはありませんが、これを行うための最良の方法を本当に知りたいです。SQL Server 2005で実行しているので、MERGE操作はありません。

0 投票する
6 に答える
85440 参照

mysql - UPSERTを実行して、更新部分で新しい値と古い値の両方を使用できるようにする方法

ばかげているが単純な例:受け取ったアイテムの合計を保持するテーブル「Item」があると仮定します。

ここではアイテム名が主キーです。アイテムAを数量Xで受け取ったときに、次のことを達成する方法。

アイテムが存在しない場合は、アイテムAの新しいリコアを挿入し、在庫のあるアイテムをXに設定します。在庫のあるアイテムがYであるレコードが存在する場合、在庫のあるアイテムの新しい値は(X + Y)です。

私の問題は、実際のテーブルに複数の列があることです。更新部分に複数のselectステートメントを記述するのは良い考えですか?

もちろん、コードでそれを行うことはできますが、より良い方法はありますか?

0 投票する
2 に答える
8030 参照

sql - Scope_IDENTITYでのMERGEINTOの使用

次のステートメントでをMerge into実行すると、正しい代理キー情報が返されます。ただし、両方を実行すると、次に使用可能な代理キーが返されます。そして、を追加すると、との両方でnullが発生します。insertScope_IdentityupdateScope_Identity@@Identityoutputupdateinsert

updateとの両方で代理キーを返すにはどうすればよいinsertですか?

0 投票する
6 に答える
14425 参照

sql - MS-access でのアップサート

行が存在する場合は更新され、存在しない場合は挿入されるように、MS-Access 2000 用の SQL クエリを作成する必要があります。(これは「アップサート」と呼ばれると思います)

すなわち

行が存在する場合...

存在しない場合...

これは 1 つのクエリで実行できますか?

0 投票する
3 に答える
1093 参照

php - データが存在する場合の更新方法それ以外の場合は、新しいデータを挿入します (複数の行)

今日の日付がデータベースにない場合、挿入および更新ステートメントを作成する必要があります。それ以外の場合は、QTYを更新します(Excelから[私が行ったこの部分])今日から取得します。

ただし、挿入および更新する必要がある行がたくさんあります。

1) データベースで過去 4 日間をチェックします。今日が含まれていない場合は、今日のデータを挿入し、過去 3 日間のデータを更新します。一方、今日が含まれている場合は、更新されます。

PS: 使用しようとしましINSERT... ON DUPLICATE KEY UPDATEたが、影響を受けるのは 1 行だけです。

if else statement 、これを使用すると、1行のデータのみが挿入され、残りは更新されます。

アドバイスや例を教えてください。

0 投票する
3 に答える
1288 参照

c# - 動的テーブル名を持つテーブルへの UPSERT

テーブルに UPSERT するためのより良い方法は次のとおりです。

  • ~1 行/秒でのデータ アップサート
  • テーブル名は動的で、渡された ObjectID パラメータを使用して生成されます

次の手順では、「ORA-00942: 表またはビューが存在しません」がスローされます。

  • どうやら MERGE は TableName が動的にできないため機能しませんか???
  • 私は初心者で、コーディングを始めて 3 か月目です。現在 3 日間、STACKOVERFLOW と Google で検索し、あらゆる種類の面白くて絶望的な解決策を試しています。
0 投票する
1 に答える
1547 参照

drupal - Drupal 7 DBTNG:db_merge()を使用するときに最後のINSERTIDを取得する方法

db_mergeを使用する場合、INSERTが行われた場合、最後の挿入IDを取得できないようです。

MergeQuery :: execute()は、InsertQuery :: execute()のように挿入IDではなく、挿入が行われた場合にMergeQuery::STATUS_INSERTを返します。

db_mergeを使用するときに最後の挿入IDを取得するための洗練された方法はありますか?

ソース: http: //api.drupal.org/api/drupal/includes--database--query.inc/function/MergeQuery%3A%3Aexecute/7 http://api.drupal.org/api/drupal/includes --データベース--query.inc/function / MergeQuery%3A%3Aexecute / 7

0 投票する
1 に答える
854 参照

deadlock - SQL Server 2008 R2 のデッドロック

サーバー: SQL Server 2008R2 クライアント: Excel/ADO - 8 クライアント サーバー ハードウェア: 8 コア/16GB メモリ/OS: WinServer 2008SR2

Insert/Update ストアド プロシージャと Merge/Matched ストアド プロシージャの両方でデッドロックが発生します。

ここで挿入/更新について多くのことを読み、その結果、挿入/更新をマージ/一致に変更しましたが、実行されているわずか 8 つのクライアントから非常に頻繁にデッドロック エラー (10 分ごとに約 1 回) が発生します。 1 分あたり 2 回の速度で更新を要求するバッチ モード。

対照的に、各クライアントは 1 分あたり約 20,000 アイテムを別のテーブルに挿入しますが、まったく問題はありません。

このようなわずか 8 つのクライアント (特に Excel/ADO/VBA) がこの DB にストレスを与えることができるとは思わないので、これらのデッドロックの問題を解決するための支援が欲しいです!

また、クライアントから直接 SQL コマンドを発行していないことにも注意してください。すべての SQL コマンドは、ストアド プロシージャを介して呼び出されます。

現在の SP: