問題タブ [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.
sql - 更新が主キーに違反しています
データベースへの更新時に次のエラーが表示されます。
ORA-00001: 一意の制約 (DONALDBURY.BARS_ID_PK) に違反しています
更新として次のコードを使用しています。制約を取り除きたいのではなく、回避策を見つけたいのです。重複値の設定を停止したい。
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
ありがとう
sql - MERGE MATCHED WHEN CASE Oracleで変数を初期化する方法
PL/SQL マージ コマンドは初めてです。誰でも私を助けることができますか?ORACLEのMEGEクエリのMatch THEN Caseで新規レコードのMERGE MATCHED THENケースや初期化新規変数を追加したい。
次のエラーが表示されます。
ORA-06550: 行 91、列 10: PL/SQL: ORA-00905: 新しいレコードの追加または新しい変数の初期化中にキーワードが見つかりません
誰か助けてください。
sql - hsqldb で MERGE INTO を理解する
空のテーブルがあり、行が存在しない場合は挿入したいと考えています。ステートメントの 3 つの (主要な) バリエーションを試しました。1 つ目は機能し、2 つ目はエラーは発生しませんが何も挿入されず、3 つ目はエラーがスローされます。
2 番目のステートメントが何もしない理由を理解したいと思います。
最初は(挿入します):
2 番目は (挿入しない):
SELECT が何も返さない場合、NOT MATCHED ステートメントが起動するはずですよね?
3番目は(エラーあり):
最後のバージョンはhttps://stackoverflow.com/a/30938729/4142984に触発されたもので、これは hsqldb ではなく sql-server 用です。
c# - マージステートメントの発行(主に更新用)incaseブロック
データが存在する場合は、データを更新するか、データを挿入するだけのように、あるテーブル( table1
)から別のテーブル( )に特定のデータを挿入しようとしていましたが、今直面している問題は、次のような最後の条件を追加したときですtable2
if first_name like 'mss%' 私は SERVICE_TYPE_ID 10 else 20 を挿入する必要があります.しかし、このケース条件では発生しておらず、すべてのケース条件が成功しています.したがって、最後のケース条件の何が問題なのかを知りたいです
これは主に Merge update セクションで失敗し、10 ではなく 20 を挿入しています。ここに私の完全な oracle クエリがあります
指摘されたものを除いて、すべての場合の条件は成功ですtrim(b.first_name) like 'mss%'
sql - 接続が遅い異なる SQL Server の 2 つのテーブルの値をマージする
基本的に同じセットアップの 2 つの (リンクされた) Microsoft SQL サーバーがありますが、内容が異なります。サーバーとの接続が遅い。一部のテーブルには多くの行が含まれています。一部のレコードはフィールドが異なります。各サーバーのデータは 99% 一致します
トラフィック転送を最小限に抑えて、あるサーバーから別のサーバーにデータをマージする必要があります。
例えば:
できます:
- SERV2.DB2.dbo.Table を削除し、バックアップ SERV1.DB1.dbo.Table から SERV2 に復元します。
プラス: シンプル
マイナス: 大規模なデータベースでは遅い
- 各フィールドを比較して JOIN\UPDATE\INSERT または MERGE\UPDATE\INSERT 構造を使用する
プラス: シンプル
マイナス: 大きなテーブルでは遅い
マイナス:大量のデータ転送
- すべてのフィールドを使用して各行に HASH 列を追加して計算し、次に MERGE\UPDATE\INSERT を使用して差分行のみを更新します
プラス: すべての行と更新用の行のハッシュのみを転送する
マイナス: テーブルの変更
マイナス:計算中
マイナス: 多くのテーブルの作業が大幅に増える
- tablediff ユーティリティを使用する
プラスマイナス: ???この場合、それは役に立ちますか?遅い接続でどのように機能しましたか?
トラフィック転送を最小限に抑えて、あるサーバーから別のサーバーにデータをマージするより便利な方法はありますか?
UPD : 遅い接続チャネルがトラフィックを最適化する理由です。多数のレコードを持つテーブルの場合、両方のテーブルの各レコードを比較するか、完全なテーブル\データベースをコピーすると、多くの時間がかかります。
sql - 別のテーブルからのデータをマージする際の主キー違反
TBTC03 と TBTC03Y の 2 つのテーブルがあり、TBTC03Y には EFFDTE と EXPDTE として 2 つの余分な列があります。次のロジックを使用して、TBTC03 から TBTC03Y にデータをマージする必要があります。
一致する TC03 エントリが TC03Y に見つからない場合
、TC03 データを使用して新しい TC03Y レコードが作成され
ます。発効日はデフォルトで「01-01-1980」
になります。有効期限はデフォルトで「09-30-1995」になります。
と同じクエリを作成しました:
両方のテーブルの主キーは、LOB、MAJPERIL、および LOSSCAUSE です。
ただし、主キーを持つデータが既にある TBTC03Y レコードがいくつかあります。
上記のクエリを実行すると、一部の行に主キー制約が与えられます。どうすればそれを達成できるかわかりません。
sql-server - 条件が新しく挿入されたレコードと一致する場合の T-Sql MERGE ステートメントの更新
これは私が持っているXMLです:
これは、このデータを単一のテーブルに挿入または更新する MERGE ステートメントです。
テーブルにレコードがない場合、最初の xml レコードが挿入され、2 番目の xml レコードが挿入され、3 番目の xml レコードが条件に一致するため、最初のテーブル レコードが更新されると予想していました。実際には、2 回の挿入と 1 回の更新ではなく、3 回の挿入が行われます。
各挿入または更新の後に MERGE ステートメントに COMMIT または何かを実行させる方法はありますか? xml レコードをグループ化したり、最大/最後のレコードを選択したりしたくありません。
アップデート:
最初のものと同様のマージ アクションをもう 1 つ使用します。唯一の違いは、これが値を連結することです。
期待される結果は次のようになります。