問題タブ [sql-merge]

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 に答える
723 参照

sql - 更新が主キーに違反しています

データベースへの更新時に次のエラーが表示されます。

ORA-00001: 一意の制約 (DONALDBURY.BARS_ID_PK) に違反しています

更新として次のコードを使用しています。制約を取り除きたいのではなく、回避策を見つけたいのです。重複値の設定を停止したい。

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

sql-server - SQL Server: マージ ステートメントのコンパイル エラー

ストアド プロシージャでSQL ServerMERGEステートメントを使用しましたが、ストアド プロシージャをコンパイルすると、次のエラーが発生します。

オブジェクト参照 [dbo].[Student].[ID] は、オブジェクト定義 [dbo].[Student].[Id] と大文字と小文字が異なるだけです。

私のテーブル構造は次のとおりです。

私のストアドプロシージャは次のとおりです。

このエラーの原因となっている私の間違いは何ですか? ありがとう

編集

SSMS と LinqPad で SQL コンパクト データベースに接続するための 2 つの適切なリンクを取得しました。ここにリンクがあります

https://stackoverflow.com/a/16692386/728750 https://dba.stackexchange.com/questions/47534/how-do-i-view-a-microsoft-sql-server-compact-database

ありがとう

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

sql - MERGE MATCHED WHEN CASE Oracleで変数を初期化する方法

PL/SQL マージ コマンドは初めてです。誰でも私を助けることができますか?ORACLEのMEGEクエリのMatch THEN Caseで新規レコードのMERGE MATCHED THENケースや初期化新規変数を追加したい。

次のエラーが表示されます。

ORA-06550: 行 91、列 10: PL/SQL: ORA-00905: 新しいレコードの追加または新しい変数の初期化中にキーワードが見つかりません

誰か助けてください。

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

sql - hsqldb で MERGE INTO を理解する

空のテーブルがあり、行が存在しない場合は挿入したいと考えています。ステートメントの 3 つの (主要な) バリエーションを試しました。1 つ目は機能し、2 つ目はエラーは発生しませんが何も挿入されず、3 つ目はエラーがスローされます。

2 番目のステートメントが何もしない理由を理解したいと思います。

最初は(挿入します):

2 番目は (挿入しない):

SELECT が何も返さない場合、NOT MATCHED ステートメントが起動するはずですよね?

3番目は(エラーあり):

最後のバージョンはhttps://stackoverflow.com/a/30938729/4142984に触発されたもので、これは hsqldb ではなく sql-server 用です。

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

c# - マージステートメントの発行(主に更新用)incaseブロック

データが存在する場合は、データを更新するか、データを挿入するだけのように、あるテーブル( table1)から別のテーブル( )に特定のデータを挿入しようとしていましたが、今直面している問題は、次のような最後の条件を追加したときですtable2if first_name like 'mss%' 私は SERVICE_TYPE_ID 10 else 20 を挿入する必要があります.しかし、このケース条件では発生しておらず、すべてのケース条件が成功しています.したがって、最後のケース条件の何が問題なのかを知りたいです

これは主に Merge update セクションで失敗し、10 ではなく 20 を挿入しています。ここに私の完全な oracle クエリがあります

指摘されたものを除いて、すべての場合の条件は成功ですtrim(b.first_name) like 'mss%'

0 投票する
0 に答える
76 参照

sql - 接続が遅い異なる SQL Server の 2 つのテーブルの値をマージする

基本的に同じセットアップの 2 つの (リンクされた) Microsoft SQL サーバーがありますが、内容が異なります。サーバーとの接続が遅い。一部のテーブルには多くの行が含まれています。一部のレコードはフィールドが異なります。各サーバーのデータは 99% 一致します

トラフィック転送を最小限に抑えて、あるサーバーから別のサーバーにデータをマージする必要があります

例えば:

できます:

  1. SERV2.DB2.dbo.Table を削除し、バックアップ SERV1.DB1.dbo.Table から SERV2 に復元します。

プラス: シンプル

マイナス: 大規模なデータベースでは遅い

  1. 各フィールドを比較して JOIN\UPDATE\INSERT または MERGE\UPDATE\INSERT 構造を使用する

プラス: シンプル

マイナス: 大きなテーブルでは遅い

マイナス:大量のデータ転送

  1. すべてのフィールドを使用して各行に HASH 列を追加して計算し、次に MERGE\UPDATE\INSERT を使用して差分行のみを更新します

プラス: すべての行と更新用の行のハッシュのみを転送する

マイナス: テーブルの変更

マイナス:計算中

マイナス: 多くのテーブルの作業が大幅に増える

  1. tablediff ユーティリティを使用する

プラスマイナス: ???この場合、それは役に立ちますか?遅い接続でどのように機能しましたか?

トラフィック転送を最小限に抑えて、あるサーバーから別のサーバーにデータをマージするより便利な方法はありますか?

UPD : 遅い接続チャネルがトラフィックを最適化する理由です。多数のレコードを持つテーブルの場合、両方のテーブルの各レコードを比較するか、完全なテーブル\データベースをコピーすると、多くの時間がかかります。

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

sql - 別のテーブルからのデータをマージする際の主キー違反

TBTC03 と TBTC03Y の 2 つのテーブルがあり、TBTC03Y には EFFDTE と EXPDTE として 2 つの余分な列があります。次のロジックを使用して、TBTC03 から TBTC03Y にデータをマージする必要があります。

一致する TC03 エントリが TC03Y に見つからない場合
、TC03 データを使用して新しい TC03Y レコードが作成され
ます。発効日はデフォルトで「01-01-1980」
になります。有効期限はデフォルトで「09-30-1995」になります。

と同じクエリを作成しました:

両方のテーブルの主キーは、LOB、MAJPERIL、および LOSSCAUSE です。

ただし、主キーを持つデータが既にある TBTC03Y レコードがいくつかあります。

上記のクエリを実行すると、一部の行に主キー制約が与えられます。どうすればそれを達成できるかわかりません。

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

sql-server - 条件が新しく挿入されたレコードと一致する場合の T-Sql MERGE ステートメントの更新

これは私が持っているXMLです:

これは、このデータを単一のテーブルに挿入または更新する MERGE ステートメントです。

テーブルにレコードがない場合、最初の xml レコードが挿入され、2 番目の xml レコードが挿入され、3 番目の xml レコードが条件に一致するため、最初のテーブル レコードが更新されると予想していました。実際には、2 回の挿入と 1 回の更新ではなく、3 回の挿入が行われます。

結果のスクリーンショット:ここに画像の説明を入力

各挿入または更新の後に MERGE ステートメントに COMMIT または何かを実行させる方法はありますか? xml レコードをグループ化したり、最大/最後のレコードを選択したりしたくありません。

アップデート:

最初のものと同様のマージ アクションをもう 1 つ使用します。唯一の違いは、これが値を連結することです。

期待される結果は次のようになります。