概要:このチュートリアルでは、Oracle MERGEステートメントを使用して更新または挿入を実行する方法を学習します。指定された条件に基づくデータ。
OracleMERGEステートメントの概要
Oracle MERGEステートメントは、1つ以上のソーステーブルからデータを選択します。更新するか、ターゲットテーブルに挿入します。 MERGEステートメントを使用すると、ターゲットテーブルからデータを更新するかターゲットテーブルにデータを挿入するかを決定する条件を指定できます。
以下に、Oracleの構文を示します。 MERGEステートメント:
MERGEステートメントを詳しく調べてみましょう:
まず、更新またはINTO句に挿入するターゲットテーブル(target_table)。
次に、更新または挿入するデータのソース(source_table)をUSING句で指定します。
3番目に指定します。マージ操作が更新されるか、ON句に挿入される検索条件。
ターゲットテーブルの各行について、Oracleは検索条件を評価します。
- 結果がtrueの場合、Oracleはソーステーブルの対応するデータで行を更新します。
- 結果がfalseの場合y行の場合、Oracleは対応する行をソーステーブルからターゲットテーブルに挿入します。
MERGEステートメントは、組み合わせる場合に便利です。 1回の操作で複数のINSERT、UPDATE、およびDELETEステートメント。
MERGEは決定論的ステートメントであるため、同じMERGEステートメントでターゲットテーブルの同じ行を複数回更新することはできません。 。
オプションのDELETE WHERE句をMATCHED句に追加して、マージ操作後にクリーンアップできます。 DELETE句は、ONとDELETE WHEREの両方に一致するターゲットテーブルの行のみを削除します。
OracleMERGEの前提条件
MERGEステートメントを実行するには、INSERTおよびUPDATEオブジェクト権限。 DELETE句を使用する場合は、ターゲットテーブルに対するDELETEオブジェクト権限も必要です。
Oracle MERGEの例
membersとmember_stagingの2つのテーブルがあるとします。
新しいメンバーがあるときはいつでも、membersテーブルに新しい行を挿入します。次に、membersテーブルのデータがmember_stagingテーブルのデータとマージされます。
次のステートメントmembersテーブルとmember_stagingテーブルを作成します。
次のINSERTステートメントは、サンプルデータをmembersテーブルとmember_stagingテーブルに挿入します。
テーブルをmember_stagingテーブルにするには、次のアクションを実行する必要があります。
- メンバーID1、3で行を更新します。 、4、および6は、これらのテーブルのこれらのメンバーのランクまたは姓が異なるためです。
- メンバーIDが7〜10の行を挿入するのは、これらの行がテーブルですが、
member_stagingテーブルにはありません。
合計8行をマージする必要があります。
フォローingは、これらすべてのアクションを一度に実行するMERGEステートメントです。
mergeステートメントは、members<の各行を比較します。 member_id列の値に基づいたmember_stagingテーブルの各行を持つ/ div>テーブル(上記の句)。
両方のテーブルのmember_id列の値が等しい場合、MERGEステートメントは、firstの値が次の場合にのみ、membersテーブルからmember_stagingテーブルに名、姓、およびランクを更新します。両方のテーブルの名前、姓、またはランク列が異なります。
それ以外の場合は、membersテーブルの行をテーブル。
Oracleは期待どおりにマージされた8行を返しました。
このチュートリアルでは、Oracle MERGEデータを更新または挿入するステートメント指定された条件に基づいています。
- このチュートリアルは役に立ちましたか?
- はいいいえ