8

mergeOracleの関数を使用して、複数のテーブルを変更することは可能ですか? それぞれの場合で、次のような異なる操作を行う必要があります。

MERGE INTO users tab1
USING(SELECT 1 id, 10 points FROM dual) tab2 
ON(tab1.id = tab2.id ) 
WHEN MATCHED THEN 
   UPDATE SET points = tab2.points 
   UPDATE "abc" = action.status -- another table
WHEN NOT MATCHED THEN 
   INSERT(id, points)  VALUES(tab2.id, tab2.points) 
   UPDATE "def" = action.status -- another table
4

1 に答える 1

9

ドキュメントによると、簡単な答えはノーです。構文は1つのテーブルまたはビューをサポートします。ただし、更新可能なビューを使用すると、複数テーブルの挿入/更新を実行できます。

しかし、あなたの例は、あなたができないことを他のことをしようとしているようです。WHEN MATCHED句は、何を更新するかを指定します。この句からINSERTすることはできません。WHEN NOT MATCHED句についても同じです。この句から更新することはできず、INSERTのみです。

于 2012-05-15T01:00:13.647 に答える