2017-05-18 4 views
0

テーブルを更新する際に2つのパーティションを使用することは可能でしょうか?パーティションを使用してテーブルを更新する

たとえば、私はそのようなことをしようとしますが、私にエラーを与えます。

update student PARTITION (ma_stu_class1, ma_stu_class2) 
set branch = 'R'||100; 

これを行う方法があるかどうか教えてください。事前

+0

の可能性のある重複した[更新パーティション表オラクル](http://stackoverflow.com/questions/22847652/updating-パーティション表 - オラクル) – XING

答えて

0

ありがとうございますdocumentationごとに、そのような複数のパーティションを更新することはできません - あなたは、のPARTITION (partition)部分の内側partitionの右側から出てくる矢印が存在することになることができれば、 partitionの左側に,を介して戻るようになるダイアグラム - update_set_clauseダイアグラムの上半分に似ています。

代わりに、where句でパーティションキーを使用する必要があります。あなたの鍵が言う、col1とcol2に、上にある場合、あなたはどうなる:あなたは更新だけでなく、選択に複数のパーティションを使用することはできません

update student 
set branch = 'R'||100 
where (col1, col2) in (('class1', 'a'), ('class2', 'b')); 
1

。代わりに、以下のクエリを使用することができます。

MERGE INTO student S 
USING (SELECT * FROM student PARTITION(ma_stu_class1) 
UNION ALL 
SELECT * FROM student PARTITION(ma_stu_class2)) S1 
ON (S.CONNON_COLUMN = S1.COMMON_COLUMN) 
WHEN MATCHED THEN 
UPDATE 
SET 
branch = 'R'||100; 

UNION ALL同じテーブルの複数のパーティションを持つとあなたがテーブルを更新できる機能を使用してMERGE

関連する問題