ソースが有効な単一行のsubqueryでない場合、プライマリ インデックスとパーティション列は更新できません。
次のテーブルを作成したとします。
CREATE TABLE t1 ( x1 INTEGER, y1 INTEGER, z1 INTEGER) PRIMARY INDEX(x1); CREATE TABLE t2 ( x2 INTEGER, y2 INTEGER, z2 INTEGER) PRIMARY INDEX(x2) UNIQUE INDEX(y2);
次の事例は有効です。
MERGE INTO t1 USING (SELECT x2, y2, z2 FROM t2 WHERE y2=10) AS s ON x1=10 AND y1=20 WHEN MATCHED THEN UPDATE SET x1=10 WHEN NOT MATCHED THEN INSERT (y2, z2, x2);
次の事例は、サブクエリーによって単一行が保証されますが、ON句の等価条件に定数が指定されていないため、このリクエストが実行しようとしているプライマリ インデックスの更新を実行できません。このため、この事例は有効ではありません。
MERGE INTO t1 USING (SELECT x2,y2, z2 FROM t2 WHERE y2=10) AS s ON x1=y2 AND y1=z2 WHEN MATCHED THEN UPDATE SET x1=10 WHEN NOT MATCHED THEN INSERT (y2, z2, x2);