例: ON、WHEN MATCHED、WHEN NOT MATCHED句内のソースまたはターゲットの参照 - Teradata Database - Teradata Vantage NewSQL Engine - 例: ON、WHEN MATCHED、WHEN NOT MATCHED句内のソースまたはターゲットの参照、MERGEリクエスト

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

次の例は、ON、WHEN MATCHED、またはWHEN NOT MATCHED句でソース テーブルとターゲット テーブル以外のテーブルを参照しているので、失敗します。

次の例は、テーブルt4は、派生ソース テーブルsでもターゲット テーブルt1でもないので、失敗します。

     MERGE INTO t1
       USING (SELECT x2,y2, z3
              FROM t2, t3
              WHERE y2=10) AS s
       ON x1=y2 AND t4.x4=z2
     WHEN MATCHED THEN
       UPDATE SET z1=10
     WHEN NOT MATCHED THEN
       SELECT (y2, z2, x2);

次の例は、テーブルt3は、派生ソース テーブルsでもターゲット テーブルt1でもないので、失敗します。USINGのソース テーブル サブクエリーにt3が指定されていますが、ON句ではソース テーブルとターゲット テーブルだけを参照できるという制限に違反しています。

     MERGE INTO t1
       USING (SELECT x2,y2, z3
              FROM t2, t3
              WHERE y2=10) AS s
       ON x1=y2 AND t3.x4=z2
     WHEN MATCHED THEN
       UPDATE SET z1=10
     WHEN NOT MATCHED THEN
       INSERT (y2, z2, x2);