テーブルを更新する際に2つのパーティションを使用することは可能でしょうか?パーティションを使用してテーブルを更新する
たとえば、私はそのようなことをしようとしますが、私にエラーを与えます。
update student PARTITION (ma_stu_class1, ma_stu_class2)
set branch = 'R'||100;
これを行う方法があるかどうか教えてください。事前
テーブルを更新する際に2つのパーティションを使用することは可能でしょうか?パーティションを使用してテーブルを更新する
たとえば、私はそのようなことをしようとしますが、私にエラーを与えます。
update student PARTITION (ma_stu_class1, ma_stu_class2)
set branch = 'R'||100;
これを行う方法があるかどうか教えてください。事前
で
ありがとうございます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'));
。代わりに、以下のクエリを使用することができます。
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
の可能性のある重複した[更新パーティション表オラクル](http://stackoverflow.com/questions/22847652/updating-パーティション表 - オラクル) – XING