次のソース リレーションとターゲット リレーションの定義を定義したとします。
CREATE TABLE t1 ( a1 INTEGER, b1 INTEGER, c1 INTEGER) PRIMARY INDEX (a1) PARTITION BY b1; CREATE TABLE t2 ( a2 INTEGER, b2 INTEGER, c2 INTEGER) PRIMARY INDEX (a2), UNIQUE INDEX(b2);
次の例は、ON句では、ターゲット リレーションのパーティション列セットの代わりにシステム派生PARTITION列を使用できないので、失敗します。
MERGE INTO t1 USING t2 ON a1=a2 AND t1.PARTITION=10 WHEN MATCHED THEN UPDATE SET b1=10 WHEN NOT MATCHED THEN INSERT (a2, b2, c2);
このMERGEリクエストは、ターゲット テーブルa1および、そのパーティション列b1のプライマリ インデックスに関する条件を指定しているので有効です。
MERGE INTO t1 USING t2 ON a1=a2 AND b1=10 WHEN MATCHED THEN UPDATE SET c1=c2;
次のMERGEリクエストは、同様に同じソース テーブルとターゲット テーブルに対して記述されていますが、ON句にターゲット テーブルのパーティション列b1を指定していないので、有効ではありません。
MERGE INTO t1 USING t2 ON a1=a2 WHEN MATCHED THEN UPDATE SET c1=c2;
システム派生PARTITION列に基づく条件をON句に指定できますが、残余条件としてのみ指定できます。例えば、次の例は、プライマリ インデックスの等価条件a1=a2、およびターゲット テーブルのパーティション列の条件b1=10が両方とも指定されているので、適切に動作します。システムは、追加のt1.PARTITION条件t1.PARTITION=25を残余条件としてのみ処理します。