概要:このチュートリアルでは、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
データを更新または挿入するステートメント指定された条件に基づいています。
- このチュートリアルは役に立ちましたか?
- はいいいえ